【发布时间】:2021-09-18 02:32:21
【问题描述】:
我有一些非常大的 txt 文件 (> 2 gb),其中的数据质量不好。 在某些列(应该是整数)中,对于低于 1000.00 的值,'.'用作小数点(例如 473.71886),但对于高于 1000.00 的值,则格式类似于 7.541,72419。所以','用作小数点,'.'用于千位分隔符。
我已经通过以下命令使用 pd.read_csv 读取了文本文件
df = pd.read_csv('mseg.txt',delimiter=("#|#"),nrows=(1000),engine = 'python')
我尝试构建要使用的正则表达式,但它不起作用
pattern = "[0-9]+[\.][0-9]+[,][0-9]+"
我正在考虑使用下面的代码来纠正上述问题,但它不起作用。 (在下面的代码中我用pattern2 = ","来测试代码)
for i in df.iloc[:,-5]:
df3 = []
if re.search(pattern2,i):
k= i.replace(".","")
print(k)
df3.append(k)
else:
df3.append(k)
return dfe3
循环中的print(k) 似乎工作正常,但是当我运行 df3 时,我得到以下输出
['\x00\x003\x004\x00\x006\x006\x005\x00,\x002\x001\x007\x006\x000\x00']
有人可以帮忙吗?
提前谢谢你!
【问题讨论】:
标签: python pandas for-loop data-quality