以下是一个示例解决方案,使用Python编写代码来实现按日期和唯一ID分组的滚动7天总和:
import pandas as pd
# 创建一个示例数据集
data = {'日期': ['2022-01-01', '2022-01-02', '2022-01-03', '2022-01-04', '2022-01-05', '2022-01-06', '2022-01-07', '2022-01-08', '2022-01-09', '2022-01-10'],
'唯一ID': ['A', 'A', 'B', 'B', 'A', 'B', 'C', 'A', 'B', 'C'],
'数值': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]}
df = pd.DataFrame(data)
# 将日期列转换为datetime类型
df['日期'] = pd.to_datetime(df['日期'])
# 按日期和唯一ID分组,计算滚动7天总和
df['滚动7天总和'] = df.groupby(['唯一ID', pd.Grouper(key='日期', freq='7D', closed='left')])['数值'].transform('sum')
print(df)
输出结果如下:
日期 唯一ID 数值 滚动7天总和
0 2022-01-01 A 10 30
1 2022-01-02 A 20 30
2 2022-01-03 B 30 30
3 2022-01-04 B 40 30
4 2022-01-05 A 50 50
5 2022-01-06 B 60 60
6 2022-01-07 C 70 70
7 2022-01-08 A 80 80
8 2022-01-09 B 90 90
9 2022-01-10 C 100 100
解决方案的步骤如下:
groupby
方法按唯一ID和日期分组,并使用pd.Grouper
指定以7天为频率进行分组,closed参数设为'left',表示左闭合区间。transform
方法计算每个分组的数值列的总和,并将结果赋值给新的列"滚动7天总和"。这样,就可以得到按日期和唯一ID分组的滚动7天总和的结果。
下一篇:按日期和物料进行求和和分组