我有一个像下面这样的数据框,想要计算每列的均值,但前提是该列没有足够的值。输入的值
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()
答案 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)
您可以使用dropna
用thresh
传递条件
df.dropna(thresh = len(df)-5,axis = 1).mean()
答案 2 :(得分:0)
我想你想提到<5个问题
'> 5'表示如果列包含的nan大于5,则计算平均值
因此应该为<5
df.loc[:,df.isnull().sum()<5].mean()