pandas多个分隔符不工作

时间:2017-09-03 20:16:56

标签: python pandas

我在导入包含多个分隔符的数据集时遇到问题。这些文件大多是制表符分隔的,但是有一个列有大约700个值,这些值都是以分号分隔的。

我看到了之前的类似问题,解决方案只是使用'sep'参数指定多个分隔符:

dforigin = pd.read_csv(filename, header=0, skiprows=6, 
                       skipfooter=1, sep='\t|;', engine='python')

由于某种原因,这不起作用。如果我这样做,它看起来就像一团糟。到目前为止,我的解决方法是以tab分隔的形式导入文件,删除有问题的列('emg data',它位于最后一列右侧的屏幕外)并保存为临时.csv,重新导入数据,然后将其附加到初始数据帧。

我的解决方法感觉有点草率,我想知道是否有人可以帮助它变得更清洁。

1 个答案:

答案 0 :(得分:2)

IIUC,您希望每个列中的分号分隔值占据数据框中的一列,以及文件中的其他初始列。在这种情况下,我建议您使用sep='\t'读取文件,然后拆分分号列。

使用样本数据:

data = {'foo':[1,2,3], 'bar':['a;b;c', 'i;j;k', 'x;y;z']}
df = pd.DataFrame(data)
df
     bar  foo
0  a;b;c    1
1  i;j;k    2
2  x;y;z    3

带有新数据框的Concat df,由拆分的分号列构成:

pd.concat([df.drop('bar', 1), 
           df.bar.str.split(";", expand=True)], axis=1)

   foo  0  1  2
0    1  a  b  c
1    2  i  j  k
2    3  x  y  z

注意:如果您的实际数据不包含以分号分隔的列的列名,但如果它绝对是表中的最后一列,那么根据unutbu的建议,将df.bar替换为df.iloc[:, -1] }。