如何应用滚动平均数函数的轴1python

问题描述 投票:0回答:1

很简单,我们可以通过轴来计算平均值。

import pandas as pd

df=pd.DataFrame({'A':[1,1,0,1,0,1,1,0,1,1,1],
                 'b':[1,1,0,1,0,1,1,0,1,1,1],
                 'c':[1,1,0,1,0,1,1,0,1,1,1]}) 

# max_of_three columns 
mean= np.max(df.mean(axis=1))

如何用滚动平均线来计算?

我试过1.用滚动平均数来计算。

# max_of_three columns 
mean=df.rolling(2).mean(axis=1)

得到了这个错误:"UnsupportedFunctionCall: numpy operations not valid with window objects:

UnsupportedFunctionCall: numpy操作对窗口对象无效。使用.rolling(...).mean()代替。

我试了2个。

def tt(x):
    x=pd.DataFrame(x)
    b1=np.max(x.mean(axis=1))
    return b1

# max_of_three columns 
mean=df.rolling(2).apply(tt,raw=True)

但从这里开始,我得到了三列的结果,在现实中应该是每一个移动窗口有一个值。

我在哪里做错了吗? 或者有什么其他有效的方法可以做到这一点。

python-3.x pandas numpy pandas-groupby
1个回答
0
投票

你可以使用 axis 争论中滚动为。

df.rolling(2, axis=0).mean()
>>>       A    b    c
    0   NaN  NaN  NaN
    1   1.0  1.0  1.0
    2   0.5  0.5  0.5
    3   0.5  0.5  0.5
    4   0.5  0.5  0.5
    5   0.5  0.5  0.5
    6   1.0  1.0  1.0
    7   0.5  0.5  0.5
    8   0.5  0.5  0.5
    9   1.0  1.0  1.0
    10  1.0  1.0  1.0

r = df.rolling(2, axis=1).mean()
r
>>>      A    b    c
    0  NaN  1.0  1.0
    2  NaN  0.0  0.0
    3  NaN  1.0  1.0
    4  NaN  0.0  0.0
    5  NaN  1.0  1.0
    6  NaN  1.0  1.0
    7  NaN  0.0  0.0
    8  NaN  1.0  1.0
    9  NaN  1.0  1.0
    10 NaN  1.0  1.0

r.max()
>>> A    NaN
    b    1.0
    c    1.0
    dtype: float64
© www.soinside.com 2019 - 2024. All rights reserved.