熊猫read_csv-忽略分号分隔文件中的转义字符

时间:2019-08-30 19:32:18

标签: python pandas

我正在尝试加载用分号分隔的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分隔;然后它也排在第二。

有没有办法告诉熊猫在加载之前忽略它们或有效去除它们?

1 个答案:

答案 0 :(得分:1)

给出以下示例csv文件so57732330.csv

col1;col2
1&lt;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