Python 替换数据帧中格式不正确的值
我正在使用pandas将Excel电子表格作为数据框导入。该电子表格是手动维护的,包含多个数据输入错误,其中最常见的错误是格式为字符串的整数,前导空格为不间断空格('\xa0')。电子表格是定期更新的,因此这些令人讨厌的不一致性在何时何地突然出现是完全不可预测的 基本上,我试图找到一种干净的方法来查找和重新格式化这些值。由于它们主要局限于一个专栏,我尝试了以下几种版本:Python 替换数据帧中格式不正确的值,python,string,pandas,type-conversion,Python,String,Pandas,Type Conversion,我正在使用pandas将Excel电子表格作为数据框导入。该电子表格是手动维护的,包含多个数据输入错误,其中最常见的错误是格式为字符串的整数,前导空格为不间断空格('\xa0')。电子表格是定期更新的,因此这些令人讨厌的不一致性在何时何地突然出现是完全不可预测的 基本上,我试图找到一种干净的方法来查找和重新格式化这些值。由于它们主要局限于一个专栏,我尝试了以下几种版本: for entry in df.loc[:, 'col']: if type(row) == str:
for entry in df.loc[:, 'col']:
if type(row) == str:
row = row.replace(u'\xa0', u'')
如果我在for
循环的中添加print(row)
调用,它将准确地打印我期望的内容,即,“1187383”变为“1187383”。但是,在for
循环之外,该值不会被替换。循环执行后,调用.loc
返回未更改的条目('1187383')
我肯定我错过了一些显而易见的东西,但我现在已经花了大约一天的时间试图找到解决方案。感谢您的帮助!如果您需要更多信息,请告诉我。我建议您尝试一下,但稍有改进:
s = df['col'].astype(str).str.replace('[^0-9.]', '')
df['col'] = pd.to_numeric(s, errors='coerce')
所有的都是数字?是的,所有的数字。df.replace(“[^0-9]”,“”,regex=True)。apply(pd.to_numeric)
这行吗?不,不幸的是,这没有删除空格。你做了df=df.replace吗(“…
因为它至少应该删除空格它可以工作!!而且,正如我所怀疑的,我确实错过了一些明显的东西。谢谢你们两位的帮助!我也想发布一个答案,但没有数据让我有点害怕发布。@Bharathshetty有时你必须采取信心的飞跃。从现在开始我会的。:)