用空格分隔的csv,在列名称和值中使用空格

时间:2019-10-25 07:44:48

标签: python pandas csv

我必须将一个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()函数,但结果不正确。我文件的输出数据帧如下所示:

wrong output

因此,它不仅不能正确捕获Card type,而且将其与端口合并并创建了一些未命名列。

1 个答案:

答案 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