首页 > 解决方案 > 如何遍历数据框,添加 3 个特定行,用它们的总和替换这 3 行,然后每 57 行重复一次?

问题描述

我有这个数据框:

     2020/01/02  2020/02/01  2020/03/01
0   |     10          10          10
1   |     10          10          10
2   |     10          10          10
.......................................
57  |     20          20          20
58  |     20          20          20
59  |     20          20          20   
.......................................
114 |     30          30          30
115 |     30          30          30
116 |     30          30          30

我想将第 0、1 和 2 行相加,然后用它们的总和替换第 0、1 和 2 行,这样我的新数据框将如下所示:

     2020/01/02  2020/02/01  2020/03/01
0   |     30          30          30
.......................................
57  |     20          20          20
58  |     20          20          20
59  |     20          20          20   
.......................................
114 |     30          30          30
115 |     30          30          30
116 |     30          30          30

然后我想遍历数据框并每 57 行添加 3 行连续的行,然后用它们的总和替换这 3 行,这样我的结果数据框将如下所示:

     2020/01/02  2020/02/01  2020/03/01
0   |     30          30          30
.......................................
57  |     60          60          60 
.......................................
114 |     90          90          90

我该怎么做呢?

标签: pythonpandas

解决方案


您可以按行过滤每 3 个连续值57,然后按每sum3 行聚合:

np.random.seed(123)

N = 200
df = pd.DataFrame(np.random.choice([3,4,6], size=(N, 3)))

a = np.arange(len(df))

df.index = a // 57
df = df[a % 57 < 3]

df = df.groupby(level=0).sum()
print (df)
    0   1   2
0  18  11  18
1  12  13  18
2  13  13  16
3  10  14  15

推荐阅读