как получить значение столбца 2, когда столбец 1 больше 3, и проверить, принадлежит ли это значение какой ячейке

#python-3.x #pandas #numpy #pandas-groupby

Вопрос:

У меня есть один фрейм данных с двумя столбцами, A и B . сначала мне нужно сделать пустые контейнеры с шагом 1 от 1 до 11 , (1,2),(2,3)….(10,11). затем проверьте из исходного кадра данных, если значение столбца B больше 3, затем получите значение столбца » A » 2 строки до того, как столбец B будет больше 3.

 Here is example dataframe :
df=pd.DataFrame({'A':[1,8.5,5.2,7,8,9,0,4,5,6],'B':[1,2,2,2,3.1,3.2,3,2,1,2]})

Required output 1:
df_out1=pd.DataFrame({'Value_A':[8.5,5.2]})

Required_output_2:

df_output2:

Bins    count
(1 2)    0    
(2,3)    0
(3,4)    0
(4,5)    0
(5,6)    1
(6,7)    0
(7,8)  0
(8,9)  1  
(9,10)  0
(10,11) 0
 

Комментарии:

1. был ли какой-то код, который вы попробовали и потерпели неудачу?

2. @sammywemmy до сих пор не нашел подвоха

Ответ №1:

Вы можете индексировать сдвинутый ряд, чтобы получить две строки до того, как » A » удовлетворит некоторым условиям, таким как

 out1 = df['A'].shift(3)[df['B'] > 3]
 

То, что вы хотите сделать с ячейками, называется гистограммой. Вы можете легко сделать это с помощью numpy, например

 count, bin_edges = np.histogram(out1, bins=[i for i in range(1, 12)])

out2 = pd.DataFrame({'bin_lo': bin_edges[:-1], 'bin_hi': bin_edges[1:], 'count': count})
 

Здесь «bin_lo» и «bin_hi» являются нижней и верхней границами ячеек.