删除 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()
我有一个数据框,我需要将列转换为浮点数和整数,它有错误的行,即,列中应该是浮点数或整数的值是字符串值。
如果我使用 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()