很简单,我们可以通过轴来计算平均值。
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)
但从这里开始,我得到了三列的结果,在现实中应该是每一个移动窗口有一个值。
我在哪里做错了吗? 或者有什么其他有效的方法可以做到这一点。
你可以使用 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