gpt4 book ai didi

python - 计算总月累计订单数

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:52 24 4
gpt4 key购买 nike

我需要找到每月累计订单总数。我有 2 列 OrderDate 和 OrderId。由于数据太大,我无法使用列表来查找累积数字。并且结果应该是 year_month 格式以及每个月的累计订单总数。

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我试图将日期时间列拆分为年和月,然后分组但没有得到正确的结果。

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)

最佳答案

将列转换为日期时间,然后按 to_period 转换为月期间, 通过 numpy.arange 添加新列最后删除重复项,按 DateDataFrame.drop_duplicates 列保留最后一个重复项:

import numpy as np

df1['orderDate'] = pd.to_datetime(df1['orderDate'])
df1['Date'] = df1['orderDate'].dt.to_period('m')
#use if not sorted datetimes
#df1 = df1.sort_values('Date')
df1['CumulativeOrder'] = np.arange(1, len(df1) + 1)
print (df1)
orderDate OrderId Date CumulativeOrder
0 2011-11-18 06:41:16 23 2011-11 1
1 2011-11-18 04:41:16 2 2011-11 2
2 2011-12-18 06:41:16 69 2011-12 3
3 2012-03-12 07:32:15 235 2012-03 4

df2 = df1.drop_duplicates('Date', keep='last')[['Date','CumulativeOrder']]
print (df2)
Date CumulativeOrder
1 2011-11 2
2 2011-12 3
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

关于python - 计算总月累计订单数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340683/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com