我有一个名为df的数据框,如下所示:
index a b c d e f g
1 1 2 3 4 5 6 7
2 2 3 4 5 6 7 8
3 3 4 5 6 7 8 9
4 4 5 6 7 8 9 0
5 5 6 7 8 9 0 1
6 6 7 8 9 0 1 2
7 7 8 9 0 1 2 3
8 8 9 0 1 2 3 4
我试图保留前2行,并在第二行之后每3行合并并加总值。 结果应该是这样的:
Index a b c d e f g
1 1 2 3 4 5 6 7
2 2 3 4 5 6 7 8
3 12 15 18 21 24 17 10
4 21 24 17 10 3 6 9
例如,col ['a'],索引3 = 12,即3 + 4 + 5
我一次只能添加一行。有没有迭代的干净方法将它们加起来?
答案 0 :(得分:1)
使用.rolling()
并选择第三行:
df1 = df[:2]
df1 = df1.append(df[2:].rolling(3).sum().dropna()[::3]).reset_index(drop=True)
# increase index by 1
df1.set_index(np.arange(len(df1))+1)
a b c d e f g
1 1.0 2.0 3.0 4.0 5.0 6.0 7.0
2 2.0 3.0 4.0 5.0 6.0 7.0 8.0
3 12.0 15.0 18.0 21.0 24.0 17.0 10.0
4 21.0 24.0 17.0 10.0 3.0 6.0 9.0