Python Pandas如何计算列中每隔一行的平均值


import pandas as pd
data = {'Pressure' : [100,112,114,120,123,420,123,1230,132,1,23,13,13,13,123,13,123,3,222,2303,1233,1233,1,1,30,20,40,401,10,40,12,122,1,12,333]}
df = pd.DataFrame(data)

如果我有这个例子DF,是否有一种简单的方法来计算列中每其他行的平均值?我希望有1、3、5、7行的平均值。等等,还有第2、4、6、8、10行的平均值....我不知道最好的办法是什么。

我们可以这样得到偶数行的平均值:

>>> df.iloc[::2].mean() 
Pressure    153.111111
dtype: float64

括号中的语法是:start(不做任何事):stop(不做任何事):step_count(2)。
对于偶数,从0开始,到结束,递增2

我们可以对概率行执行如下操作:

>>> df.iloc[1::2].mean()
Pressure    356.294118
dtype: float64

对于odds,我们从1开始,到end,递增2。

使用索引计算奇数和偶数行的平均值作为groupby的键:

>>> df.groupby(df.index % 2).mean()
Pressure
0  153.111111  # Rows 0, 2, 4, 6, ...
1  356.294118  # Rows 1, 3, 5, 7, ...

注意:如果你的索引不是数字也没有问题,创建一个:

>>> df.groupby(pd.RangeIndex(len(df)) % 2).mean()
Pressure
0  153.111111
1  356.294118

您可以使用iloc方法(如上所示),因为您不能获得所有奇数/偶数。为了克服这个问题,你可以使用下面的代码(它只是通过对索引进行mod来查找奇数/偶数):

j=0
even= []
odd= []
for i in df.loc[:,'Pressure']:
if j%2 == 0:
even.append(i)
else:
odd.append(i)
j += 1

print(f'Odd mean: {np.mean(odd)}')
print(f'Even mean: {np.mean(even)}')