首页 > 解决方案 > Python数据框计算一行中的值并将状态添加到另一行

问题描述

有一个带有值的df

name    subject  

mark     M         
mark     S
mark     P
mark     SS
staurt   M
cuban    S
cuban    P

如果 name 中的用户计数在 name 列中多次出现,则当​​前状态应为 YES ,如果仅出现一次,则状态当前状态应为 NO

name    subject   present status

mark     M          YES
mark     S          YES
mark     P          YES
mark     SS         YES
staurt   M          No
cuban    S          YES
cuban    P          YES

试过这个:

df['当前状态'] = np.where(df['name'] == df['name'].shift(), 'YES', 'NO')

标签: pythonpython-3.xpandasdataframenumpy

解决方案


Series.duplicated与 一起使用keep=False

df['present status'] = np.where(df['name'].duplicated(keep=False), 'YES', 'NO')
print (df)
     name subject present status
0    mark       M            YES
1    mark       S            YES
2    mark       P            YES
3    mark      SS            YES
4  staurt       M             NO
5   cuban       S            YES
6   cuban       P            YES

推荐阅读