Python:将数据框中的每3行加起来

时间:2019-05-11 08:52:20

标签: python dataframe

我有一个名为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

我一次只能添加一行。有没有迭代的干净方法将它们加起来?

1 个答案:

答案 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