Python pandas pivot_table несколько временных индексов - PullRequest
3 голосов
/ 23 января 2020

У меня есть следующий фрейм данных:

import pandas as pd
import datetime

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

Я хочу повернуть, используя в качестве индексов год и месяц, что я могу сделать как:

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

Однако с тех пор дает мне два столбца с именем T, я не могу установить margins = True (выдает ошибку: The name T occurs multiple times, use a level number). Как я могу исправить эту проблему? В идеале я хотел бы именовать столбцы вручную при выполнении разворота, чтобы у меня были Year и Month вместо T и T.

Есть идеи?

1 Ответ

2 голосов
/ 23 января 2020

IIU C, вы можете использовать rename для переименования вашей серии,

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

Выход:

              V
Year Month     
2020 1        3
All           3
...