通过将pandas数据框中的单个列分组来创建新列

时间:2019-12-13 13:42:58

标签: python pandas

我有一个数据框

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

感谢您的帮助

1 个答案:

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