我有一个name
和status
的df,其中存在和不存在作为值。
name status
0 anthony present
1 anthony absent
2 mason present
3 donny present
4 donny absent
5 donny absent
6 paul present
7 paul present
我正在尝试为每个名字加上状态True or False
。
如果name
中的一个具有absent
,其状态将为False
预期输出:
name output
0 anthony False
1 mason True
2 donny False
3 paul True
答案 0 :(得分:2)
您可以将status
与'present'
进行比较,然后通过name
得到最小值:
# or `all()` instead of `min()`
df['status'].eq('present').groupby(df['name']).min()
输出:
name
anthony False
donny False
mason True
paul True
Name: status, dtype: bool
答案 1 :(得分:1)
另一种方法是按名称分组,以查找名称是否作为唯一状态。
df.groupby('name')['status'].apply(lambda x: (x=='present').all())
name
anthony False
donny False
mason True
paul True