我希望将A列分组,然后对B列的最后3行进行求和。
df = pd.DataFrame()
df['A'] = [1, 1, 1, 1, 2, 2, 2, 2]
df['B'] = [1, 2, 3, 4, 1, 2, 3, 4]
我尝试过。
df['sum_B_previous_3'] = df.groupby('A').B.shift(1).rolling(3, min_periods=0).sum()
df
A B sum_B_previous_3
0 1 1 0.0
1 1 2 1.0
2 1 3 3.0
3 1 4 6.0
4 2 1 5.0
5 2 2 4.0
6 2 3 3.0
7 2 4 6.0
但我想要。
A B sum_B_previous_3
0 1 1 0.0
1 1 2 1.0
2 1 3 3.0
3 1 4 6.0
4 2 1 0.0
5 2 2 1.0
6 2 3 3.0
7 2 4 6.0
为什么第4行和第5行的结果错误?如何纠正这个问题?
df.groupby('A').B.shift(1)
返回新的Series
,而.rolling(3, min_periods=0).sum()
与之一起工作,就像df['sum_B_previous_3'] = df.groupby('A').B.shift(1)
一样。df['sum_B_previous_3'] = df['sum_B_previous_3'].rolling(3, min_periods=0).sum()
- jezrael