繁体   English   中英

Pandas - 将多列折叠成一列

[英]Pandas - collapse multiple columns into one

使用此 dataframe 聚合:

john = df[df['name']=='John'].agg(
                                total_points=('points', 'sum'),
                                mean=('points', 'mean'),
                                games=('games', 'max'),
                                G=('G', 'sum'),
                                A=('A', 'sum'),
                                FF=('FF', 'sum'),
                                FD=('FD', 'sum'),
                                FT=('FT', 'sum'),
                                FS=('FS', 'sum'),
                                DS=('DS', 'sum'))

我明白了:

                  points      games     G    A    FF    FD   FT    FS    DS
total_points  245.500000        NaN   NaN  NaN   NaN   NaN  NaN   NaN   NaN
mean            7.439394        NaN   NaN  NaN   NaN   NaN  NaN   NaN   NaN
games                NaN       33.0   NaN  NaN   NaN   NaN  NaN   NaN   NaN
G                    NaN        NaN  18.0  NaN   NaN   NaN  NaN   NaN   NaN
A                    NaN        NaN   NaN  6.0   NaN   NaN  NaN   NaN   NaN
FF                   NaN        NaN   NaN  NaN  32.0   NaN  NaN   NaN   NaN
FD                   NaN        NaN   NaN  NaN   NaN  25.0  NaN   NaN   NaN
FT                   NaN        NaN   NaN  NaN   NaN   NaN  5.0   NaN   NaN
FS                   NaN        NaN   NaN  NaN   NaN   NaN  NaN  77.0   NaN
DS                   NaN        NaN   NaN  NaN   NaN   NaN  NaN   NaN  16.0

我如何重塑它以最终得到:

total_points   245.500000       
mean             7.439394       
games                33.0       
G                    18.0        
A                    6.0       
FF                   32.0        
FD                   25.0        
FT                   5.0        
FS                   77.0        
DS                   16.0  

  

最后加上sum

df[df['name']=='John'].agg(
                                total_points=('points', 'sum'),
                                mean=('points', 'mean'),
                                games=('games', 'max'),
                                G=('G', 'sum'),
                                A=('A', 'sum'),
                                FF=('FF', 'sum'),
                                FD=('FD', 'sum'),
                                FT=('FT', 'sum'),
                                FS=('FS', 'sum'),
                                DS=('DS', 'sum')).sum(axis=1)

为什么不直接对列使用正确的映射:

john = df[df['name']=='John'].agg(
                                total_points=('points', 'sum'),
                                mean=('points', 'mean'),
                                games=('points', 'max'),
                                G=('points', 'sum'),
                                A=('points', 'sum'),
                                FF=('points', 'sum'),
                                FD=('points', 'sum'),
                                FT=('points', 'sum'),
                                FS=('points', 'sum'),
                                DS=('points', 'sum'))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM