我正在尝试加载用分号分隔的txt文件,并且在某些情况下数据中包含转义字符。这些通常是&lt; (已删除空格,因此它不会被<覆盖),这会添加分号。显然,这弄乱了我的数据,并且由于dtypes很重要,因此会导致read_csv问题。读取文件时,有没有办法告诉大熊猫忽略它们?
我尝试从文件中删除char,它现在可以工作,但是鉴于我想要对数百万行进行自动化处理,因此这是不可持续的。
df = pd.read_csv(file_loc.csv,
header=None,
names=column_names,
usecols=counters,
dtype=dtypes,
delimiter=';',
low_memory=False)
ValueError: could not convert string to float:
因为我的第一列是字符串,第二列是浮点数,但是如果第一列由&lt分隔;然后它也排在第二。
有没有办法告诉熊猫在加载之前忽略它们或有效去除它们?
答案 0 :(得分:1)
给出以下示例csv文件so57732330.csv
:
col1;col2
1<2;a
3;
我们在unescaping命名和html5数字字符引用之后使用StringIO
进行阅读:
import pandas as pd
import io
import html
with open('so57732330.csv') as f:
s = f.read()
f = io.StringIO(html.unescape(s))
df = pd.read_csv(f,sep=';')
结果:
col1 col2
0 1<2 a
1 3 NaN