我有这个数据框:
Name Date Quantity
Apple 07/11/17 20
orange 07/14/17 20
Apple 07/14/17 70
Orange 07/25/17 40
Apple 07/20/17 30
我想通过以下方式汇总Name
and Date
获得数量总和
细节:
Date:分组,结果应该在本周初(或仅在周一)
Quantity:总和,如果两个或多个记录具有相同的名称和日期(如果落在相同的时间间隔内)
所需的输出如下:
Name Date Quantity
Apple 07/10/17 90
orange 07/10/17 20
Apple 07/17/17 30
orange 07/24/17 40
一、转换列date
to_datetime并减去一周,因为我们想要的是该日期之前一周的总和,而不是该日期之前一周的总和。
然后使用groupby with Grouper by W-MON并聚合sum
:
df['Date'] = pd.to_datetime(df['Date']) - pd.to_timedelta(7, unit='d')
df = df.groupby(['Name', pd.Grouper(key='Date', freq='W-MON')])['Quantity']
.sum()
.reset_index()
.sort_values('Date')
print (df)
Name Date Quantity
0 Apple 2017-07-10 90
3 orange 2017-07-10 20
1 Apple 2017-07-17 30
2 Orange 2017-07-24 40
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)