我有一个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
的情况)。
知道我做错了什么吗?
谢谢!
答案 0 :(得分:2)
尝试看看
(df.iloc[:100000, 180:-1].isnull().sum()==100000).any()
如果此返回True
,则意味着您的列的值是前100000行中的所有NaN
现在让我们解释一下为什么对整个数据帧进行notnull
时会得到所有mean
,因为mean
具有skipna
default < / em> 作为True
,因此它将NaN
放在mean