Python Dataframe:根据条件为列赋值?

2024-09-28 23:18:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有namestatus的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

Tags: ornamefalsetruedfoutput状态status
2条回答

另一种方法是按名称分组,并查找名称是否作为唯一状态出现

df.groupby('name')['status'].apply(lambda x: (x=='present').all())



    name
    anthony    False
    donny      False
    mason       True
    paul        True

您可以将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

相关问题 更多 >