我正在尝试读取以下格式的csv文件
myHeader
myJunk
myDate
A, B, C, D
, b, c, d
dataA, dataB, dataC, dataD, EXTRA_INFO_STRING
dataA, dataB, dataC, dataD, EXTRA_INFO_STRING
dataA, dataB, dataC, dataD, EXTRA_INFO_STRING
当我使用
^{pr2}$我得到以下错误(我的数据比上面的例子更复杂,但功能相同)
pandas._parser.CParserError: Error tokenizing data. C error: Expected 393 fields in line 9, saw 394
如何给额外的“信息”列命名并将这些字符串包含在我的数据帧中?在
[编辑]
我想出了如何跳过麻烦的行,但现在数据没有正确对齐
from StringIO import StringIO
s = """myHeader
myJunk
myDate
A, B, C, D
, b, c, d
dataA, dataB, dataC, dataD, EXTRA_INFO_STRING
dataA, dataB, dataC, dataD, EXTRA_INFO_STRING
dataA, dataB, dataC, dataD, EXTRA_INFO_STRING"""
df = pd.read_csv(StringIO(s), header=3, skiprows=[4])
>>print df
A B C D
dataA dataB dataC dataD EXTRA_INFO_STRING
dataA dataB dataC dataD EXTRA_INFO_STRING
dataA dataB dataC dataD EXTRA_INFO_STRING
我想要的是:
A B C D MY_INFO
dataA dataB dataC dataD EXTRA_INFO_STRING
dataA dataB dataC dataD EXTRA_INFO_STRING
dataA dataB dataC dataD EXTRA_INFO_STRING
如果只有标题后的行丢失
EXTRA_INFO_STRING
,则可以分别加载列名和数据:以下代码(可能不是很优雅)将加载列名:
^{pr2}$试验中使用的数据:
怎么样:
有时,如果read_csv数字转换有问题,可以添加dtype=object 进入read_csv调用并在以后自己使用处理转换数据帧.aType. 在
下面是一些我尝试过的方法,它似乎可以获得您想要的格式的数据。基本思想是“忽略所有有问题的行”(如果您了解文件结构,这是可能的)。在
这将以您想要的格式提供输出。在
我的经验是
read_csv
,在得到想要的之前,必须尝试一些组合。在希望这有帮助。在
相关问题 更多 >
编程相关推荐