计算一列是否在另一列中具有特定值
我有一列 (user_id) 有数千个 user_id(也重复),另一列(字符串)有几个不同的字符串。我想检查一个唯一的 user_id 是否有一个特定的字符串,并将用户 id 和 1 存储在一个新的数据帧中。如果 user_id 没有字符串,那么我想存储 user_id 和 0。在这种情况下,我想给字符串“good”一个 1,给任何其他字符串一个 0。
如果不无限循环,我似乎找不到这样做的好方法。
初始 Pandas 数据框
用户身份 | 细绳 |
---|---|
1 | 好的 |
1 | 更好的 |
1 | 好的 |
2 | 好的 |
2 | 更差 |
3 | 更差 |
3 | 甚至更糟 |
回答
为了保持矢量化,我们可以跳过apply
:
df['string'].eq('good').groupby(df['user_id']).any().astype(int).reset_index(name='is string')
user_id is string
0 1 1
1 2 1
2 3 0