删除 pandas 数据强制错误的行

drop rows with errors for pandas data coercion

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

如果我使用 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'

我想要这样的东西:

pd.to_numeric(df.bad, errors='drop')

而这个 returns 数据框只有 2 个好行。

由于错误的值被替换为 np.NaN,现在删除错误的行不就只是 df.dropna() 了吗?

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

之前使用 df.fillna()