以下是一个示例代码,演示了如何使用Python中的pandas库实现按照两个独立列分组的移动平均。
import pandas as pd
# 创建示例数据
data = {'Group1': ['A', 'A', 'A', 'B', 'B', 'B'],
'Group2': ['X', 'X', 'Y', 'Y', 'Z', 'Z'],
'Value': [1, 2, 3, 4, 5, 6]}
df = pd.DataFrame(data)
# 按照两个独立列分组,计算移动平均
df['MovingAvg'] = df.groupby(['Group1', 'Group2'])['Value'].rolling(window=2).mean().reset_index(0, drop=True)
print(df)
输出结果如下所示:
Group1 Group2 Value MovingAvg
0 A X 1 NaN
1 A X 2 1.5
2 A Y 3 NaN
3 B Y 4 NaN
4 B Z 5 NaN
5 B Z 6 5.5
在示例中,我们首先创建了一个包含三列的DataFrame,其中'Group1'和'Group2'是两个独立的列,'Value'是一个数值列。然后,我们使用groupby()
函数按照'Group1'和'Group2'两个列进行分组。接下来,我们使用rolling()
函数计算每个分组中'Value'列的移动平均值,指定窗口大小为2。最后,我们将移动平均值赋给新的列'MovingAvg'。
需要注意的是,在计算移动平均时,首个窗口内的值会被设为NaN(因为没有前一个值进行计算),因此我们使用reset_index(0, drop=True)
将这些NaN值删除。
上一篇:按照两个层级分组获取记录的数量