我有一个数据框
df1 = pd.DataFrame({'value': [100, 100, 100, 200, 300, 300, 400],
'owner': list('aabbaba')})
value owner
100 a
100 a
100 b
200 b
300 a
300 b
400 a
我需要对value列进行分组并产生新的输出,以使value
列中不存在重复项。链接到a和b的值应具有owner
的{{1}}值,而只有一个所有者的值应仅具有该所有者。
所需的输出:
both
感谢您的帮助
答案 0 :(得分:2)
一种方法是检查每个组中唯一值的数量,然后使用np.where
替换为both
或组中包含的唯一值:
import numpy as np
out = df.groupby('value', as_index=False).agg({'owner':'nunique'})
out['owner'] = np.where(out.owner.eq(2),
'both',
df.groupby('value').owner.first())
print(out)
value owner
0 100 both
1 200 b
2 300 both
3 400 a