如何获取数据透视表的索引作为列

时间:2019-05-15 15:56:12

标签: python indexing pivot-table

我正在尝试旋转我的桌子。它具有4个主要列,以及大约20个其他未使用的列。列是“网站”,“类别”,“周初”和“总时数”。

我正在尝试按网站,类别和周开始对total_hours求和。

我正在使用df.pivot_table函数,它可以按我的意愿进行操作,但是输出需要一些修正。

效果很好,但是我得到以下输出:

  

索引(“ sum”,“ Total_Hours”)   ('Site1','Cat1',Timestamp('2019-12-23'))725

我正在使用的代码是:

df2=df.pivot_table(index=['Site','Category','Week_Beginning'],values=['Total_Hours'],aggfunc=[np.sum],fill_value=0)

从数学角度看,代码运行良好,也就是说,总和正确

输出为:

效果很好,但是我得到以下输出:

  

索引(“ sum”,“ Total_Hours”)   ('Site1','Cat1',Timestamp('2019-02-23'))725

因此,输出仅包含一个名称为('sum','Total_Hours')的列

我期望的是4列,如下所示:

Site       Category           Week_Beginning           Total_Hours
Site1        Cat1               2019-03-23                225
Site1        Cat1               2019-03-30                152 

任何帮助将不胜感激。 我正在通过Spyder 3.3.3使用python 3.7.3

谢谢。

-PR。

1 个答案:

答案 0 :(得分:0)

在我看来,您应该使用groupby-

df2=df.groupby(['Site','Category','Week_Beginning']).agg({"Total_Hours":"sum"}).reset_index()