首页 > 解决方案 > Pandas 按组、时间间隔运行总计

问题描述

我想拿一张这样的客户订单表:

customer_id | order_date | amount
0           | 2020-03-01 | 10.00
0           | 2020-03-02 |  2.00
1           | 2020-03-02 |  5.00
1           | 2020-03-02 |  1.00
2           | 2020-03-08 |  2.00
1           | 2020-03-09 |  1.00
0           | 2020-03-10 |  1.00

并创建一个按周计算运行总计的表。就像是:

order_week  |   0    |   1    |  2
2020-03-01  | 12.00  | 6.00   | 0.00
2020-03-08  | 13.00  | 7.00   | 2.00

非常感谢你的帮助!!

标签: pythonpandas

解决方案


国际大学联盟:

df['order_date'] = pd.to_datetime(df['order_date'])

(df.groupby(['customer_id',df.order_date.dt.floor('7D')])
   .amount.sum()
   .unstack('customer_id',fill_value=0)
   .cumsum()
)

输出:

customer_id     0    1    2
order_date                 
2020-02-27   12.0  6.0  0.0
2020-03-05   13.0  7.0  2.0

推荐阅读