Python - 在日期范围内创建新列(总和) - 滚动总和?

Python - Create new column (summation) in date range - Rolling Sum?

我正在尝试在我的数据框中创建一个新列:

设 X 为可变天数。

日期 售出单位 过去 X 天售出的总单位数
0 2019-01-0119:00:00 5
1 2019-01-0115:00:00 4
2 2019-01-0511:00:00 1
3 2019-01-1212:00:00 3
4 2019-01-1515:00:00 2
5 2019-02-0418:00:00 7

对于每一行,我需要总结过去 10 天售出的单位 + 所有售出的单位(设 x = 10 天)

期望的结果:

日期 售出单位 过去 X 天售出的总单位数
0 2019-01-0119:00:00 5 5
1 2019-01-0115:00:00 4 9
2 2019-01-0511:00:00 1 10
3 2019-01-1212:00:00 3 4
4 2019-01-1515:00:00 2 6
5 2019-02-0418: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)"

请大家帮忙!

根据您的样本数据,您需要指定参数。

df = pd.DataFrame({'Date': [pd.Timestamp('2019-01-01 15:00:00'),
  pd.Timestamp('2019-01-01 19:00:00'),
  pd.Timestamp('2019-01-05 11:00:00'),
  pd.Timestamp('2019-01-12 12:00:00'),
  pd.Timestamp('2019-01-15 15:00:00'),
  pd.Timestamp('2019-02-04 18:00:00')],
 'Units Sold': [4, 5, 1, 3, 2, 7],
 'Total Units sold in the last X days': [np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]})
df = df.sort_values("Date")
df["Total Units sold in the last X days"] = df.rolling("10D", on="Date").sum()["Units Sold"]
df

Date Units Sold Total Units sold in the last X days
0 2019-01-01 15:00:00 4 4
1 2019-01-01 19:00:00 5 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 5
5 2019-02-04 18:00:00 7 7