Les Pandas tableaux croisés dynamiques sous-totaux de ligne
Je suis en utilisant les Pandas 0.10.1 l'a
Considérant ce Dataframe:
Date State City SalesToday SalesMTD SalesYTD
20130320 stA ctA 20 400 1000
20130320 stA ctB 30 500 1100
20130320 stB ctC 10 500 900
20130320 stB ctD 40 200 1300
20130320 stC ctF 30 300 800
Comment puis-je sous-totaux de groupe par l'état?
State City SalesToday SalesMTD SalesYTD
stA ALL 50 900 2100
stA ctA 20 400 1000
stA ctB 30 500 1100
J'ai essayé avec un tableau croisé dynamique, mais je ne peut avoir des sous-totaux dans les colonnes
table = pivot_table(df, values=['SalesToday', 'SalesMTD','SalesYTD'],\
rows=['State','City'], aggfunc=np.sum, margins=True)
Je peux l'obtenir sur excel, avec un tableau croisé dynamique.
Vous devez vous connecter pour publier un commentaire.
Si vous mettez de l'État et de la Ville, à la fois dans les lignes, vous aurez séparé les marges. Remodeler et vous obtenez la table que vous êtes après:
J'avoue que ce n'est pas tout à fait évident.
rows
n'est pas un paramètre. - Je spécifier un 3 index de colonne, mais en sortie renvoie grand total seulement et non pas les sous-totaux des colonnes indexées.Vous pouvez obtenir le résumé des valeurs à l'aide de groupby() sur l'État de la colonne.
Permet de faire quelques données de l'échantillon de première:
Puis appliquer le groupby fonction et ajouter une colonne Ville:
Nous pouvons ajouter les données d'origine pour un résumé de la df en utilisant append:
J'ai ajouté le set_index et sort_index pour le faire paraître plus comme votre exemple de sortie, ce n'est pas strictement nécessaire pour obtenir les résultats.
Je Pense que cette sous-total code d'exemple est ce que vous voulez(similaire à excel sous-total)
Je suppose que vous voulez de groupe par des colonnes A, B, C, D, que de compter la valeur de la colonne de E
de sortie:
margins=True
paramètre: il est nécessaire pour obtenir les lignes avecall
ajouté.Comment à ce sujet ?