Skip to main content
 首页 » 编程设计

python之根据另一列的分组计数添加 Pandas 列

2025年05月04日15telwanggs

如果我有一个 pandas 数据框包含:

    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