Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算每月累计订单总数_Python_Pandas - Fatal编程技术网

Python 计算每月累计订单总数

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。由于数据太大,我无法使用列表来查找累积数字。结果应为年/月格式,以及每个月的累计订单总数

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