首页 > 解决方案 > Python Pandas:将组的特定值分配给数据框中该组的所有条目

问题描述

我有一个带有下面列的数据框,使用它需要通过分组名称来创建新列。如果状态对任何一个 St..

data = {'Name':['Tom', 'Tom', 'krish', 'jack','jack','Nam','sue'],
        'St':['S-123', 'S-290', 'S-123', 'S-147','S-98','S-123','S-38'],
        'Status':['Inactive','active','active','inactive','active','Inactive','Inactive']}
  
df = pd.DataFrame(data)

所需的输出是

    Name     St    Status New Status
0    Tom  S-123  Inactive     active
1    Tom  S-290    active     active
2  krish  S-123    active     active
3   jack  S-147  inactive     active
4   jack   S-98    active     active
5    Nam  S-123  Inactive   Inactive
6    sue   S-38  Inactive   Inactive

标签: pythonpython-3.x

解决方案


你不需要分组,在一行你可以做到这一点

df['New Status'] = df.apply(lambda row: "active" if any(df.query('Name == @row.Name').Status == 'active') else "inactive", axis=1)

推荐阅读