我有一个像这样的数据框“ df”:
user_id record
0 a No
1 a No
2 a Yes
3 b No
4 b No
5 c Yes
6 c Yes
每行表示用户操作的记录。 “记录”列表示该操作是否非法。现在,我想添加一列以显示用户是否进行了非法操作。结果应该是:
user_id record history
0 a No 1
1 a No 1
2 a Yes 1
3 b No 0
4 b No 0
5 c Yes 1
6 c Yes 1
一旦用户至少进行了1次非法操作,所有的“历史记录”都应该为1。如何获得此信息?
答案 0 :(得分:2)
这可能比您的解决方案快一点:
df['history'] = df['record'].eq('Yes').groupby(df['user_id']).transform('any')
答案 1 :(得分:0)
我尝试了一种方法。
df['history'] = df.groupby('user_id').transform(lambda x: int('Yes' in x.values))
这可以解决问题。但是我认为这不是一个聪明的主意。