仅当每行中的值数量大于python pandas中的特定数量时才计算平均值

时间:2018-09-17 08:21:18

标签: python pandas dataframe

我有一个包含9列的每日时间序列数据框。每列代表不同方法的测量结果。我只想计算两次以上的平均值,否则想指定为NaN。如何用熊猫数据框做到这一点?

假设我的df如下:

             0    1      2    3     4     5    6      7     8
2000-02-25  NaN   0.22  0.54  NaN   NaN  NaN   NaN   NaN    NaN
2000-02-26  0.57  NaN   0.91  0.21  NaN  0.22  NaN   0.51   NaN
2000-02-27  0.10  0.14  0.09  NaN   0.17 NaN   0.05  NaN    NaN
2000-02-28  NaN   NaN   NaN  NaN    NaN  NaN   NaN   NaN    0.14
2000-02-29  0.82  NaN   0.75  NaN   NaN  NaN   0.14  NaN    NaN

我期望平均值如下:

             0    
2000-02-25  NaN   
2000-02-26  0.48  
2000-02-27  0.11  
2000-02-28  NaN   
2000-02-29  0.57  

1 个答案:

答案 0 :(得分:6)

根据where创建的条件,将DataFrame.count用于NaN的值,以计算排除NaN并计数Series.gt>进行比较):

s = df.where(df.count(axis=1).gt(2)).mean(axis=1)
#alternative soluton with changed order
#s = df.mean(axis=1).where(df.count(axis=1).gt(2))
print (s)
2000-02-25      NaN
2000-02-26    0.484
2000-02-27    0.110
2000-02-28      NaN
2000-02-29    0.570
dtype: float64