我最初有一个称为df的数据框。我使用以下命令根据特定的标准对数据框进行了分组。
df= df.groupby([df['Date'].dt.strftime('%B'), 'Project','Name'])['Hours'].sum()
因此,我得到了以下数据框。
**Date** **Project** **Name** **Hours**
September Project 1 x 1.00
x 3.00
Project 2 a 16.00
z 4.00
Project 3 y 1.00
June Project 1 x 1.00
x 45.00
y 6.00
July Project 2 a 16.00
z 4.00
Project 3 y 1.00
现在,我正在尝试根据“日期”对该数据框进行排序。换句话说,我想要的是6月,7月和9月而不是9月,6月,7月,所以这就是我希望得到的:
**Date** **Project** **Name** **Hours**
June Project 1 x 1.00
x 45.00
y 6.00
July Project 2 a 16.00
z 4.00
Project 3 y 1.00
September Project 1 x 1.00
x 3.00
Project 2 a 16.00
z 4.00
Project 3 y 1.00
有什么想法吗?
答案 0 :(得分:1)
按月汇总,然后按字典使用rename
:
MonthDict={ 1 : "January",
2 : "February",
3 : "March",
4 : "April",
5 : "May",
6 : "June",
7 : "July",
8 : "August",
9 : "September",
10 : "October",
11 : "November",
12 : "December"
}
df= (df.groupby([df['Date'].dt.month, 'Project','Name'])['Hours'].sum()
.rename(MonthDict, level=0))
如果日期时间是原始排序的,则可以在groupby中使用sort=False
以避免排序:
df= df.groupby([df['Date'].dt.strftime('%B'), 'Project','Name'], sort=False)['Hours'].sum()