我打算使用DataFrame方法将记录从axis=0 (行)中删除,其值超过25%作为NaN。我已经审查了熊猫的官方参考,并提出了以下代码。然而,这并没有给出预期的结果。我遗漏了什么?
同时,使问题可重复地共享数据文件。
参考文献综述:
关于某些相关主题的现有堆栈溢出帖子的
代码:
import pandas as pd
df = pd.read_csv('data3.csv')
# Method that doesn't work
df.shape # (628, 123)
df.dropna(thresh=df.shape[1]/ 4, axis=0, inplace=True)
#OR --- df.dropna(thresh=df.shape[1]/ 4, axis=0, subset=list(df.columns), inplace=True)
df.shape # (628, 123)
# Method that works
df.shape # (628, 123)
df = df[(df.isna().sum(axis=1) < df.shape[1]/ 4)]
df.shape # (626, 123)CSV文件链接: https://wetransfer.com/downloads/57e63e83bd6b62ca8016768bec732f7720201127140326/2a946b
发布于 2020-11-27 17:00:33
您的所有行至少都有df.shape[1]/ 4 = 30.7非NaN值,这就是为什么您的drop语句不能工作的原因--没有什么可以放在那里的。听起来,从你的操作来看,你至少希望非NaNs的数量是df.shape[1] - df.shape[1]/ 4,这是对你有用的。所以这就是
df.dropna(thresh = df.shape[1] - df.shape[1]/ 4, axis=0).shape产生
(626, 123)如你所愿
https://stackoverflow.com/questions/65038982
复制相似问题