У меня есть dataframe, который выглядит следующим образом. Самый правый столбец - это моя желаемая колонка:
Group Value Target_Column
1 0 0
1 0 0
1 1 1
1 2 0
2 0 0
2 1 1
2 0 0
2 1 0
Как определить первое ненулевое значение в группе (Group
), а затем создать столбец, в котором сохраняется первое ненулевое значение и показать все остальное как нули?
Я пытаюсь использовать idxmax
для этого, как указано в этом решении: найти первое ненулевое значение в каждом столбце pandas DataFrame
import pandas as pd
df = pd.DataFrame({'Group': [1,1,1,1,2,2,2,2], 'Value': [0,0,1,1,0,1,0,1]})
df.ne(0).idxmax()
g = df.groupby('Group').Value
g.ne(0).idxmax()
Использование idxmax
df['Newcol']=0
df.loc[df.Value.ne(0).groupby(df['Group']).idxmax(),'Newcol']=1
df
Out[41]:
Group Value Target_Column Newcol
0 1 0 0 0
1 1 0 0 0
2 1 1 1 1
3 1 2 0 0
4 2 0 0 0
5 2 1 1 1
6 2 0 0 0
7 2 1 0 0
Value
),NewCol
показывает 1 для первого элемента. Как показать нули для всех элементов, если нет ненулевого элемента?df.loc[df.Newcol.eq(0),'Newcol']=0
в конце