Python,Pandas:将相邻的2行数据求平均

5

这是一个非常基础的问题,但我想知道:

在 pandas Dataframe 中,将每两行数据合并成一个平均值,从而使得行数减半的“正确”方法是什么?

请注意,这与rolling_mean不同,因为它会减少条目数量。

1个回答

4
一个快速的方法:
>>> s = pd.Series(range(10))
>>> s
0    0
1    1
2    2
3    3
4    4
5    5
6    6
7    7
8    8
9    9
>>> ((s + s.shift(-1)) / 2)[::2]
0    0.5
2    2.5
4    4.5
6    6.5
8    8.5

“正确的方式”可能是这样的:

>> a = s.index.values
>>> idx = np.array([a, a]).T.flatten()[:len(a)]
>>> idx
[0 0 1 1 2 2 3 3 4 4]
>>> s.groupby(idx).mean()
0    0.5
2    2.5
4    4.5
6    6.5
8    8.5

但它比原来慢了约2倍,而且随着尺寸的增加变得更糟。


很好,谢谢,我喜欢这种快速的方式。它将“nice”推广到多行平均值。 - AimForClarity
当对“n”行进行平均或求和时,您需要使用“适当”的方法或使用列表的版本,除非有更好的处理任意更改的“n”的方法。 - SpmP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接