热线电话:13121318867

登录
2019-03-05 阅读量: 1181
Pandas:计算逐列平均值会产生空值

我有一个pandas DataFrame,df我希望得到第180列的结尾(不包括最后一列),只使用前100K行。

如果我使用整个DataFrame:

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

我明白了 False

如果我只使用前100K行:

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计算)。

解决办法:试试看

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

如果这个返回True,这意味着你有一个列的值全部NaN在前100000行

现在让我们解释一下为什么你所有notnull的时候做mean对整个数据帧,因为mean有skipna 默认 的True所以它会掉落NaN之前mean

7.7757
4
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子