Python,Pandas:每两行平均一次

Aim*_*ity 5 python average rows pandas

非常基本的问题,但是想知道:

在pandas Dataframe中将每2行平均的"正确"方法是什么,因此最终只有行数的一半?

请注意,这与rolling_mean不同,因为它减少了条目数.

ely*_*ase 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
Run Code Online (Sandbox Code Playgroud)

我想“正确的方法”应该是这样的:

>> 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
Run Code Online (Sandbox Code Playgroud)

但它的速度要慢大约 2 倍,并且随着尺寸的增加而变得更糟。