Определите первый ненулевой элемент в группе в пандах

1

У меня есть 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()
Теги:
pandas
numpy

1 ответ

1
Лучший ответ

Использование 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
  • 0
    Спасибо за ответ. Я замечаю, что для групп, которые не имеют ненулевых значений (все они равны 0 в столбце Value ), NewCol показывает 1 для первого элемента. Как показать нули для всех элементов, если нет ненулевого элемента?
  • 1
    @ gibbz00 делает это для защиты df.loc[df.Newcol.eq(0),'Newcol']=0 в конце
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню