如果我的熊猫数据框包含:

    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/

10-12 22:00