Python数据框:是否根据条件将值分配给列?

时间:2020-10-28 19:41:22

标签: python pandas numpy dataframe

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

2 个答案:

答案 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