3 votes

Python pandas pivot_table multiple time indices

J'ai le cadre de données suivant :

import pandas as pd
import datetime

df = pd.DataFrame({'T': [datetime.datetime.now(), datetime.datetime.now()], 'V': [1, 2]})

Je veux faire un pivot en utilisant à la fois l'année et le mois comme indices, ce que je peux faire comme :

df.pivot_table(index = [df['T'].dt.year, df['T'].dt.month], values = 'V')

Cependant, comme cela me donne deux colonnes nommées T Je n'arrive pas à régler margins = True (jette l'erreur : The name T occurs multiple times, use a level number ). Comment puis-je résoudre ce problème ? Idéalement, je voudrais nommer les colonnes manuellement lors de l'exécution du pivot, afin d'avoir Year y Month au lieu de T y T .

Des idées ?

2voto

Scott Boston Points 48995

IIUC, vous pouvez utiliser rename pour renommer votre série,

df.pivot_table(index = [df['T'].dt.year.rename('Year'),
                        df['T'].dt.month.rename('Month')], 
                values='V',
                aggfunc='sum', 
                margins=True)

Sortie :

              V
Year Month     
2020 1        3
All           3

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