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






评论(0)


暂无数据
推荐帖子
0条评论
0条评论
0条评论