如何根据列中的值计数计算数据帧的均值

时间:2019-07-13 16:45:54

标签: python pandas

我有一个像下面这样的数据框,想要计算每列的均值,但前提是该列没有足够的值。输入的值

   ID      val1  val2  val3  val4  val5
   41      190   7.4    67      5    1
   36      118     8    72      5    
   12      149  12.6    74          
   18      313  11.5    62          
   25       12  14.3    56      5    
   28       56  14.9    66           6
   23      299   8.6    65          
   19       99  13.8    59          
    8       19  20.1    61      5    9

val4和val5的值不足,因此我不希望它们的平均值。 我正在尝试使用df[df.isnull().sum() < 5].mean()

之类的方法来实现这一目标

3 个答案:

答案 0 :(得分:4)

DataFrame.loc用作boolean indexing的列,首先:表示所有行,然后计数mean

#if first column is not index
#df = df.set_index('ID')
s = df.loc[:, df.notnull().sum() > 5].mean()

颠倒条件是什么

s = df.loc[:, df.isnull().sum() <= 5].mean()

print (dfs
val1    139.444444
val2     12.355556
val3     64.666667
dtype: float64

另一种使用DataFrame.count的解决方案,用于获取排除缺失值的列数:

df = df.loc[:, df.count() > 5].mean()
print (df)
val1    139.444444
val2     12.355556
val3     64.666667
dtype: float64

答案 1 :(得分:1)

您可以使用dropnathresh传递条件

df.dropna(thresh = len(df)-5,axis = 1).mean()

答案 2 :(得分:0)

我想你想提到<5个问题

'> 5'表示如果列包含的nan大于5,则计算平均值

因此应该为<5

df.loc[:,df.isnull().sum()<5].mean()