首页 > 解决方案 > 分组数据,计算唯一值并将此值附加到行

问题描述

我正在尝试在每个 ID 的“组”中找到唯一数量的项目。因此,在下面的代码中,我试图为 id_match (101, 201, 26) 的每个值找到唯一的人口统计数据 (A, B, C) 数量。

tst = pd.DataFrame({'demographic' : ['A', 'B', 'B', 'A', 'C', 'C'],
            'id_match' : ['101', '101', '201', '201', '26', '26']})

tst['num_unq'] = tst.groupby('demographic')['id_match'].nunique()

预期产出

  demographic  id_match  num_unq
1     A          101        2
2     B          101        2
3     B          201        2
4     A          201        2
5     C          26         1
6     C          26         1

然而,我只是得到一列 NaN,而不是预期的输出。有谁知道为什么会发生这种情况以及另一种方法?

谢谢J

标签: pythonpython-3.x

解决方案


使用变换

tst = pd.DataFrame({'demographic' : ['A', 'B', 'B', 'A', 'C', 'C'],
            'id_match' : ['101', '101', '201', '201', '26', '26']})

tst['num_unq'] = tst.groupby('demographic')['id_match'].transform('nunique')

print(tst)

输出

  demographic id_match  num_unq
0           A      101        2
1           B      101        2
2           B      201        2
3           A      201        2
4           C       26        1
5           C       26        1

推荐阅读