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