2 votes

Pandas - réduire plusieurs colonnes en une

Avec cette agrégation de 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'))

Je reçois ceci:

                  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

Comment puis-je le remodeler pour obtenir:

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

4voto

W-B Points 94428

Ajout de sum à la fin

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)

0voto

mozway Points 233

Pourquoi n'utilisez-vous pas directement la correspondance correcte pour les colonnes :

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'))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X