获取数据框上n列的中值

时间:2017-11-10 16:20:47

标签: python pandas dataframe

我有以下数据框:

enter image description here

从中想要获得非零列的平均行数。

E.G。对于 第0行:(1303 + 1316 + 1322 + 1315)/4
第2行:(1632 + 1628 + 1609)/3

2 个答案:

答案 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