Skip to main content
 首页 » 编程设计

python之Groupby 算作一列,groupby 计算 Pandas 中另一列的唯一值数

2025年05月04日19hnrainll

我有一个数据框,如下所示。它只有两列 Sector 和 Raised_By。


我的数据框:

Sector     Raised_By         
A          Xavi 
B          Ramos 
C          Beckham 
B          Ronaldo 
A          Messi 
A          Messi 
C          Oven 
B          Ramos 
C          Ronaldo 
A          Messi 
C          Ronaldo 
C          Beckham 

根据上面的数据框,我想准备如下所示的数据框。


预期输出:

Sector  Total_Number_of_Times_Raised  Number_unique_Raised_By    Unique_Raised_By 
A       4                             2                         ['Xavi', 'Messi'] 
B       3                             2                        ['Ramos', 'Ronaldo'] 
C       5                             3                      ['Beckham', 'Ronaldo', 'Oven'] 

我试过下面的代码

c = df.groupby(['Sector']).size().reset_index(name='Total_Number_of_Times_Raised').sort_values(['Total_Number_of_Times_Raised'],  
                    ascending =False) 

请您参考如下方法:

一个选项是 pivot_table指定不同的 aggfuncs

df.pivot_table(index=df.Sector, values='Raised_By', aggfunc=['count', 'nunique', set]) 

           count   nunique                           set 
       Raised_By Raised_By                     Raised_By 
Sector                                                      
A              4         2                 {Messi, Xavi} 
B              3         2              {Ramos, Ronaldo} 
C              5         3      {Oven, Ronaldo, Beckham}