我有一个像这样的 pandas DataFrame
100 200 300
283.1 0.01 0.02 0.40
284.1 0.02 0.03 0.42
285.1 0.05 0.01 0.8
286.1 0.06 0.02 0.9
我需要合并一定数量的连续行并计算每列的平均值和一个新索引作为我使用的索引的平均值,以获得如下所示的结果:
100 200 300
283.6 0.015 0.025 0.41
285.6 0.055 0.015 0.85
有办法用 pandas 做到这一点吗?
最佳答案
是的——你可以在 Pandas 中做到这一点。这是一种方法。
让我们说一下,我们的初始数据帧df
就像
index 100 200 300
0 283.1 0.01 0.02 0.40
1 284.1 0.02 0.03 0.42
2 285.1 0.05 0.01 0.80
3 286.1 0.06 0.02 0.90
现在,计算数据帧的长度
N = len(df.index)
N
4
我们创建一个 grp
列——用于聚合,
其中对于2行
聚合使用[x]*2
,对于n连续行
使用[x]*n
df['grp'] = list(itertools.chain.from_iterable([x]*2 for x in range(0, N/2)))
df
index 100 200 300 grp
0 283.1 0.01 0.02 0.40 0
1 284.1 0.02 0.03 0.42 0
2 285.1 0.05 0.01 0.80 1
3 286.1 0.06 0.02 0.90 1
现在,通过对 grp
列进行分组来获取方法,如下所示 --
df.groupby('grp').mean()
index 100 200 300
grp
0 283.6 0.015 0.025 0.41
1 285.6 0.055 0.015 0.85
关于python - 合并 Pandas 中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29743959/