我看了看,似乎找不到解决这个问题的办法.我想计算前30天的滚动总和的数据在每个日期的框架-由子组-为一组数据,这不是每天-它的间隔相当不规则.我一直在try 使用ChatGPT,这是在它的扭曲.
最初的建议是,我没有将DATE列转换为DATETIME格式以允许滚动计算,但现在使用以下代码:
import pandas as pd
from datetime import datetime, timedelta
import numpy as np
# Create a dataset with irregularly spaced dates spanning two years
np.random.seed(42)
date_rng = pd.date_range(start='2022-01-01', end='2023-12-31', freq='10D') # Every 10 days
data = {'Date': np.random.choice(date_rng, size=30),
'Group': np.random.choice(['A', 'B'], size=30),
'Value': np.random.randint(1, 30, size=30)}
df = pd.DataFrame(data)
# Sort DataFrame by date
df.sort_values(by='Date', inplace=True)
df['Date'] = pd.to_datetime(df['Date'])
# Calculate cumulative sum by group within the previous 30 days from each day
df['RollingSum_Last30Days'] = df.groupby('Group')['Value'].transform(lambda x: x.rolling(window='30D', min_periods=1).sum())
我收到一个错误:
ValueError: window must be an integer 0 or greater
我在网上发现了关于30D格式是否适用于滚动窗口的相互矛盾的 comments ,但我并不知道如何解决这个问题.如果有任何帮助,我很感激.
在Python3.11.8的VSCode中运行.