【发布时间】:2021-09-12 15:49:44
【问题描述】:
我正在尝试在我的数据框中创建一个新列:
设 X 为可变天数。
| Date | Units Sold | Total Units sold in the last X days | |
|---|---|---|---|
| 0 | 2019-01-01 19:00:00 | 5 | |
| 1 | 2019-01-01 15:00:00 | 4 | |
| 2 | 2019-01-05 11:00:00 | 1 | |
| 3 | 2019-01-12 12:00:00 | 3 | |
| 4 | 2019-01-15 15:00:00 | 2 | |
| 5 | 2019-02-04 18:00:00 | 7 |
对于每一行,我需要总结已售出的单位数 + 过去 10 天内售出的所有单位数(假设 x = 10 天)
期望的结果:
| Date | Units Sold | Total Units sold in the last X days | |
|---|---|---|---|
| 0 | 2019-01-01 19:00:00 | 5 | 5 |
| 1 | 2019-01-01 15:00:00 | 4 | 9 |
| 2 | 2019-01-05 11:00:00 | 1 | 10 |
| 3 | 2019-01-12 12:00:00 | 3 | 4 |
| 4 | 2019-01-15 15:00:00 | 2 | 6 |
| 5 | 2019-02-04 18:00:00 | 7 | 7 |
我在使用句号之前使用过.rolling(window=) 方法,我认为以下方法可以提供帮助
df = df.rolling(window='10D', on='date').sum() 但我的语法不正确!!
我试过了
df["Total Units sold in the last 10 days"] = df.rolling(on="date", window="10D", closed="both").sum()["Units Sold"] 但得到错误
“ValueError:传递的项目数错误 2,位置暗示 1” 和 “ValueError:传递值的形状为 (500, 2),索引暗示 (500, 1)”
请帮忙!
【问题讨论】:
-
你关心时间还是只关心日期?
-
我想我必须保持时间,因为有些条目是在同一天但不同的时间......但我最终会做每月滚动总和。
-
每月滚动总和?就像每个月一起分组并获得每个月的滚动总和?或按最近 n 天分组。例如,1 月 1 日和 12 月 31 日应该属于同一组吗?您如何处理 28、29、30 或 31 天的月份?
标签: python pandas datetime sum time-series