为熊猫数据强制删除有错误的行

Gij*_*ijs 6 python coercion pandas

我有一个数据框,我需要将列转换为浮点数和整数,其中包含错误的行,即列中应该是浮点数或整数的值是字符串值。

如果我使用df.bad.astype(float),我会收到一个错误,这是意料之中的。

如果我使用df.bad.astype(float, errors='coerce'), 或pd.to_numeric(df.bad, errors='coerce'),坏值被替换为np.NaN,也根据规范和合理。

还有errors='ignore'另一个选项可以忽略错误并单独保留错误值。

但实际上,我不想忽略错误,而是删除具有错误值的行。我怎样才能做到这一点?

我可以忽略错误并进行一些类型检查,但这不是理想的解决方案,并且可能有更惯用的方法来执行此操作。

例子

test = pd.DataFrame(["3", "4", "problem"], columns=["bad"])
test.bad.astype(float) ## ValueError: could not convert string to float: 'problem'
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

pd.to_numeric(df.bad, errors='drop')
Run Code Online (Sandbox Code Playgroud)

这将返回只有 2 个好的行的数据帧。

Ser*_*Dev 3

既然坏值被替换为,现在np.NaN不只是简单地df.dropna()删除坏行吗?

编辑:由于您不需要删除初始 NaN,也许您可​​以df.fillna()在使用之前使用pd.to_numeric