如果我的熊猫数据框包含:
Visited PersonId
0 GB 1
1 US 1
2 US 1
3 GB 1
4 DE 1
5 CN 2
6 US 2
7 GB 3
8 GB 4
添加新列的最直接方法是什么,该列包含每个PersonId所访问的国家/地区的唯一数量?
例如,对于上述情况,第1个人访问了3个不同的国家。添加上述新列后的新数据框应如下所示:
Visited PersonId CountryCount
0 GB 1 3
1 US 1 3
2 US 1 3
3 GB 1 3
4 DE 1 3
5 CN 2 2
6 US 2 2
7 GB 3 1
8 GB 4 1
最佳答案
这可行,但我觉得有更好的方法
In [104]:
df['CountryCount'] = df['PersonId'].map(df.groupby(['PersonId'])['Visited'].unique().apply(len))
df
Out[104]:
Visited PersonId CountryCount
0 GB 1 3
1 US 1 3
2 US 1 3
3 GB 1 3
4 DE 1 3
5 CN 2 2
6 US 2 2
7 GB 3 1
8 GB 4 1
关于python - 根据另一列的分组计数添加 Pandas 列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27818968/