在 pandas 身上,如何在一行中收集重复的数据行呢?

2022-03-02 00:00:00 python pandas dataframe data-science

问题描述

我有一个数据集,其中包含NBA球员每场比赛的平均统计数据。有些球员的统计数据是重复的,因为他们本赛季在不同的球队。例如:

      Player       Pos  Age Tm    G     GS   MP      FG
8   Jarrett Allen   C   22  TOT  28     10  26.2     4.4
9   Jarrett Allen   C   22  BRK  12     5   26.7     3.7
10  Jarrett Allen   C   22  CLE  16     5   25.9     4.9

我想对Jarrett Allen的统计数据求平均值,并将其放入一行中。我怎么才能做到这一点呢? 提前谢谢。


解决方案

可以groupby使用agg求平均值。对于非数字列,让我们取第一个值:

df.groupby('Player').agg({k: 'mean' if v in ('int64', 'float64') else 'first'
                          for k,v in df.dtypes[1:].items()})

输出:

              Pos  Age   Tm          G        GS         MP        FG
Player                                                               
Jarrett Allen   C   22  TOT  18.666667  6.666667  26.266667  4.333333

Nb.词典理解内容:

{'Pos': 'first',
 'Age': 'mean',
 'Tm': 'first',
 'G': 'mean',
 'GS': 'mean',
 'MP': 'mean',
 'FG': 'mean'}

相关文章