У меня есть датафрейм, который выглядит следующим образом. Самый правый столбец - это мой нужный столбец:
Group1 Group2 Value Target_Column
1 3 0 0
1 3 1 1
1 4 1 1
1 4 1 0
2 5 5 5
2 5 1 0
2 6 0 0
2 6 1 1
2 6 9 0
Как определить первое ненулевое значение в группе, которая состоит из двух столбцов (Group1
& Group2
), а затем создать столбец, который показывает первое ненулевое значение и показывает все остальное как нули?
Этот вопрос очень похож на заданный ранее здесь:
Определить первый ненулевой элемент в группе в пандах
но это решение дает ошибку для групп, основанных на нескольких столбцах.
Я пытался:
import pandas as pd
dt = pd.DataFrame({'Group1': [1,1,1,1,2,2,2,2,2], 'Group2': [3,3,4,4,5,5,6,6,6], 'Value': [0,1,1,1,5,1,0,1,9]})
dt['Newcol']=0
dt.loc[dt.Value.ne(0).groupby(dt['Group1','Group2']).idxmax(),'Newcol']=dt.Value