如果只包含少于一定数量的NaN,如何将函数应用于数据行的行?

时间:2018-04-11 01:51:12

标签: python pandas dataframe

我认为这是一个简单的问题,但我遗漏了一些东西。

我有一个数据框架。我想平均行...但我只想匹配一定数量的条目 - 或者缺少NaN值。所以下面的数据框应该得到[1.5,1.5,np.nan]的'平均'列,但是我得到的是“系列的真值是模糊的”错误。我不知道这意味着什么。

我以为它会是这样的......

<iframe/>

2 个答案:

答案 0 :(得分:2)

您可以先删除它reindexthresh dropna表示需要多少非空值

df.dropna(thresh=2).mean(1).reindex(df.index)
Out[264]: 
0    1.5
1    1.5
2    NaN
dtype: float64

答案 1 :(得分:1)

由于df [&#39; nullsum&#39;]是一个系列,并且无法进行此类比较,因此会引发错误。您可能希望比较每行的nullsum值。

df['mean']= df.apply(lambda x: np.mean(x[:3]) if x['nullsum'] < 2 else np.nan,axis=1)

这里x逐行,因此x [&#39; nullsum&#39;]给出该特定行的值。