我有一个数据帧"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
每一行表示一个用户操作的记录。列"record"表示操作是否非法。现在我想添加一列来显示用户是否有非法操作。结果应该是:
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。我怎么能拿到这个?
这可能比您的解决方案快一点:
df['history'] = df['record'].eq('Yes').groupby(df['user_id']).transform('any')
我尝试过一种方法。
df['history'] = df.groupby('user_id').transform(lambda x: int('Yes' in x.values))
这可以解决问题。但我认为这不是一个聪明的主意。