熊猫:计算列均值会产生空值

时间:2019-03-05 01:59:58

标签: python pandas

我有一个pandas DataFrame df,我想仅使用前100K行来获取第180列到最后的平均值(不包括最后一列)。

如果我使用整个DataFrame:

df.mean().isnull().any()

我得到False

如果我仅使用前10万行:

train_means = df.iloc[:100000, 180:-1].mean()
train_means.isnull().any()

我得到:True

我不确定这是怎么可能的,因为第二种方法只是获取整个DataFrame的子集的列均值。因此,如果完整DataFrame中的任何列均不具有NaN的平均值,那么我看不到完整DataFrame的子集中的列如何。

为了它的价值,我跑了:

df.columns[df.isna().all()].tolist()

,我得到:[]。因此,我认为我没有任何列的每个条目都是NaN(这会在我的NaN计算中引起train_means的情况)。

知道我做错了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试看看

 (df.iloc[:100000, 180:-1].isnull().sum()==100000).any()

如果此返回True,则意味着您的列的值是前100000行中的所有NaN

现在让我们解释一下为什么对整个数据帧进行notnull时会得到所有mean,因为mean具有skipna default < / em> 作为True,因此它将NaN放在mean

之前