Python read_csv标记化错误/从不一致的csv文件读取

时间:2019-10-19 20:30:01

标签: python pandas csv sqlalchemy

我有一个csv文件,其中包含几百行13列。 csv文件的结构如下(示例):

a  b  c  d 

23 43 54 65

76 23 43 63

.

.

a  b  e  c  d

21 12 43 12 09 

23 12 32 43 87

一个标头的值出现在另一标头下。结果,当我使用read_csv时,我得到ParserError:对数据进行令牌化时出错。 C错误:第27458行中应有12个字段,见13。

关于如何清理/重新排列csv文件并将正确的列值放在正确列下的任何建议?也许创建一个新的csv或将其输入到数据库中。谢谢

2 个答案:

答案 0 :(得分:0)

如果您不需要特别创建数据框,则可以不使用熊猫来轻松处理。标准的csv模块将愉快地读取不同长度的行。每行以列表形式返回。您可以直接使用这些字符串,或者如果需要清理csv,则可以将空字符串追加到列表中,使它们的长度都相同,然后将它们写回到新文件中。

import csv

with open('test.txt','r') as f:
    rdr=csv.reader(f)
    for i in rdr:
        print(i)

答案 1 :(得分:0)

如果您可以在 csv 文件中提供列名(总计 13 )作为文件的第一行,则可以使用 read_csv 会在没有给出任何值的情况下返回null数据,然后您可以将 NaN 替换为所需的任何其他值。