分组数据,计算唯一值并将此值附加到行

时间:2019-01-16 10:38:00

标签: python python-3.x

我试图在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

1 个答案:

答案 0 :(得分:1)

使用transform

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