Python 以空格分隔的csv,列名称和值中有空格
我必须将csv文件加载到dataframe,但列之间用单个空格分隔,并且列/值名称中也包含空格。文件如下所示:Python 以空格分隔的csv,列名称和值中有空格,python,pandas,csv,Python,Pandas,Csv,我必须将csv文件加载到dataframe,但列之间用单个空格分隔,并且列/值名称中也包含空格。文件如下所示: 'Mod Ports Card Type Model Serial No.', ' 3 20 7600 ES+ 7600-ES+20G3C SAL1550Y9DL', ' 5 2 Route Switch Proce
'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.
到目前为止,我最好的办法是检查列名中单词的长度,然后检查相应的值越低,字符数越少,但在某些情况下,如“Card Type”和“7600 ES+”可能会被识别为两个单独的列
重要的是,这个解决方案必须是通用的,不仅适用于这个例子,也适用于不同的例子。我的目标是将此文件读取到dataframe或任何其他数据结构
我试图使用pd.read_fwf()
函数,但结果不正确。我的文件的输出数据帧如下所示:
'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.
因此,它不仅没有正确捕获卡类型
,而且还将其与端口合并并创建了一些未命名的列。您可以使用:
如果为每列提供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
到目前为止你试过什么?请分享代码来重现您的尝试,并解释为什么它不起作用。坦率地说,我甚至无法编写任何远程工作的代码。我所拥有的只是概念,但我知道它不会在所有情况下都起作用。遗憾的是,它可能无法工作,并返回带有“Unnamed:2”等列的dataframe。是的,问题是我不知道这些宽度,因为它不是我必须处理的唯一一个这样的表。除非我有办法自动预测此大小,否则此解决方案将不起作用。@首先,您可以检查文件的第一行,查看每列所占的字符数(包括空格)。我仍然不确定您想怎么做。我的意思是,我该如何对代表不同栏目的内容进行分类。”“Card”和“Type”很可能是单独列的名称,但它们不是。当我尝试不使用widths参数时,它们不起作用:(是的,但在这种情况下,您假设我知道每列的宽度。我需要的是一个解决方案,它可以单独处理许多不同宽度的文件。