首页 > 解决方案 > 根据条件减少数据框中的行数

问题描述

我有一个由 9821 行和一列组成的数据框。其中的值以 161 个为一组列出 61 次 (161X61=9821)。我需要将每组 161 的前 2 个值替换为这 2 个值的平均值,从而将行数减少到 9660(161X60=9660)。更简单地说,在我现有的数据框中,需要对以下几组索引 (0, 1), (61, 62) ... (9760, 9761) 进行平均,以获得具有 9660 行的新数据框。有任何想法吗?

这就是我所拥有的(4 组生产 3 次 - 4X3=12):

0 10

1 11

2 12

3 13

4 14

5 15

6 16

7 17

8 18

9 19

10 20

11 21

这就是我想要的(3 组生产 3 次 - 3X3=9):

0 10.5

1 12

2 13

3 14.5

4 16

5 17

6 18.5

7 20

8 21

标签: pythonpandasdataframe

解决方案


我对这个答案不太满意,但我把它放在那里供审查。

>>> df[df.index%4 == 0] = df.groupby(df.index//4).apply(lambda s: s.iloc[:2].mean()).values
>>> df = df[:-3]
>>> df
      0
0  10.5
1  11.0
2  12.0
3  13.0
4  14.5
5  15.0
6  16.0
7  17.0
8  18.5

推荐阅读