答案 0 :(得分:1)
使用replace
,从0到np.nan
df.replace(0,np.nan).mean(1)
答案 1 :(得分:0)
使用sum
两次 - 所有值均为True
过程的总和,如1
:
df = df.sum(axis=1).div(df.ne(0).sum(1))
<强>计时强>:
np.random.seed(1997)
df = pd.DataFrame(np.random.randint(3, size=(1000,1000)))
#print (df)
In [60]: %timeit (df.replace(0,np.nan).mean(1))
1 loop, best of 3: 188 ms per loop
In [61]: %timeit (df.sum(axis=1).div(df.ne(0).sum(1)))
10 loops, best of 3: 21.8 ms per loop