Python 计算每月累计订单总数
我需要找到每月累计订单总数。我有两列OrderDate和OrderId。由于数据太大,我无法使用列表来查找累积数字。结果应为年/月格式,以及每个月的累计订单总数Python 计算每月累计订单总数,python,pandas,Python,Pandas,我需要找到每月累计订单总数。我有两列OrderDate和OrderId。由于数据太大,我无法使用列表来查找累积数字。结果应为年/月格式,以及每个月的累计订单总数 orderDate OrderId 2011-11-18 06:41:16 23 2011-11-18 04:41:16 2 2011-12-18 06:41:16 69 2012-03-12 07:32:15 235 2012-03-12 08:32:15
orderDate OrderId
2011-11-18 06:41:16 23
2011-11-18 04:41:16 2
2011-12-18 06:41:16 69
2012-03-12 07:32:15 235
2012-03-12 08:32:15 234
2012-03-12 09:32:15 235
2012-05-12 07:32:15 233
desired Result
Date CumulativeOrder
2011-11 2
2011-12 3
2012-03 6
2012-05 7
我已将我的excel导入pycharm,并使用pandas阅读excel
我尝试将datetime列拆分为年份和月份,然后分组,但没有得到正确的结果
df1 = df1[['OrderId','orderDate']]
df1['year'] = pd.DatetimeIndex(df1['orderDate']).year
df1['month'] = pd.DatetimeIndex(df1['orderDate']).month
df1.groupby(['year','month']).sum().groupby('year','month').cumsum()
print (df1)
将列转换为日期时间,然后转换为月份周期,添加新列,最后删除重复项,使用keep last dupe by column
Date
和:
另一个解决方案:
df2 = (df1.groupby(df1['orderDate'].dt.to_period('m')).size()
.cumsum()
.rename_axis('Date')
.reset_index(name='CumulativeOrder'))
print (df2)
Date CumulativeOrder
0 2011-11 2
1 2011-12 3
2 2012-03 6
3 2012-05 7
谢谢你的帮助。但是它没有正确地计算出累计的数量。@Erhan-你为什么这么认为?不能正确处理真实数据?你能再解释一下吗?对不起,我弄错了,我已经更新了预期的结果。我在寻找累计数量。@Erhan-好的,你能解释一下为什么
2,3,4
?2011-11年有2个订单。2011-12年度只有1个,总计3个;2012-03年度又有一个,总计4个
df2 = (df1.groupby(df1['orderDate'].dt.to_period('m')).size()
.cumsum()
.rename_axis('Date')
.reset_index(name='CumulativeOrder'))
print (df2)
Date CumulativeOrder
0 2011-11 2
1 2011-12 3
2 2012-03 6
3 2012-05 7