我正在尝试旋转我的桌子。它具有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。
答案 0 :(得分:0)
在我看来,您应该使用groupby
-
df2=df.groupby(['Site','Category','Week_Beginning']).agg({"Total_Hours":"sum"}).reset_index()