Вот мой код:
df1 = pd.DataFrame({'a': [1,2,3,1,2,3,3],'b':[1,2,3,1,2,3,3],'type':[1,0,1,0,1,0,1]})
def add_buy_label(group):
behavior_type = group.type.astype(int)
if 1 in group['type']:
group['buy_label'] = 1
else:
group['buy_label'] = 0
return group[['a', 'b', 'type','buy_label']]
Вышеприведенные функции должны сделать buy_label равным 1 для всех элементов a-b, пока существует один (тип = 1) в группе, однако результат после
df1.groupby(['a','b'],as_index = False).apply(add_buy_label)
есть
a b type buy_label
0 1 1 1 0
1 2 2 0 1
2 3 3 1 0
3 1 1 0 0
4 2 2 1 1
5 3 3 0 0
6 3 3 1 0
Довольно очевидно, что строка с 3 неверна, потому что в группе (a = 3, b = 3) существует тип = 1, но соответствующий buy_label равен 0.
Как я могу это исправить?