我必须将一个csv文件加载到数据帧,但是列之间用单个空格分隔,并且在列/值名称中也包含空格。文件看起来像这样:
'Mod Ports Card Type Model Serial No.',
' 3 20 7600 ES+ 7600-ES+20G3C SAL1550Y9DL',
' 5 2 Route Switch Processor 720 (Active) RSP720-3C-GE SAL16095Q9W',
etc.
到目前为止,我最好的主意是检查列名中单词的长度,然后检查相应的值低是否具有较大的字符数,但在某些情况下,例如“卡类型”和“ 7600 ES +”可以可能会被识别为2个单独的列。
重要的是,此解决方案必须通用并且不仅适用于本示例,而且适用于其他示例。我的目标是将此文件读取到数据框或任何其他数据结构。
我尝试使用pd.read_fwf()
函数,但结果不正确。我文件的输出数据帧如下所示:
因此,它不仅不能正确捕获Card type
,而且将其与端口合并并创建了一些未命名列。
答案 0 :(得分:1)
您可以使用read_fwf():
df = pd.read_fwf('my_file.csv')
如果为每一列都提供widths
参数,则效果最佳。
编辑
使用您提供的数据,您可以通过colspecs
参数获得结果:
df = pd.read_fwf(a, colspecs=[(0, 4), (4, 10), (10, 49), (49, 68), (68, 1000)])
df
Mod Ports Card Type Model Serial No.
0 3 20 7600 ES+ 7600-ES+20G3C SAL1550Y9DL
1 5 2 Route Switch Processor 720 (Active) RSP720-3C-GE SAL16095Q9W