pandas:给定列的聚合行并计算数字

Eda*_*ame 7 python python-3.x pandas

我有以下数据框my_df:

team      member
--------------------    
 A         Mary
 B         John
 C         Amy
 A         Dan
 B         Dave
 D         Paul
 B         Alex
 A         Mary
 D         Mary
Run Code Online (Sandbox Code Playgroud)

我希望新输出新数据框new_df为:

team      members              number
--------------------------------------
 A       [Mary,Dan]              2
 B       [John,Dave,Alex]        3
 C       [Amy]                   1
 D       [Paul,Mary]             2
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何现有的pandas功能可以执行上述任务?谢谢!

piR*_*red 6

使用 groupby

pd.concat

g = df.groupby('team').member
pd.concat([g.apply(list), g.count()], axis=1, keys=['members', 'number'])
Run Code Online (Sandbox Code Playgroud)

agg

g = df.groupby('team').member
g.agg(dict(members=lambda x: list(x), number='count'))

                 members  number
team                            
A            [Mary, Dan]       2
B     [John, Dave, Alex]       3
C                  [Amy]       1
D                 [Paul]       1
Run Code Online (Sandbox Code Playgroud)