我有以下数据帧:
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。
有什么想法吗?
发布于 2020-01-23 05:19:53
IIUC,您可以使用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           3https://stackoverflow.com/questions/59868363
复制相似问题