2017-08-24 95 views
0

我有一个数据集,其中包含所有标题都以连续格式(在文件的第一个单元格中)书写,没有任何分隔符,名称长度不等,看起来像这样:在大熊猫中分割标题

ABCDEFG 
1 0 1 0 
0 0 1 0 
1 1 0 1 

我想数据集是这个样子:

AB C D EFG 
1 0 1 0 
0 0 1 0 
1 1 0 1 

随着每列获取其相应的头名。我怎样才能做到这一点?

+2

运行'print(df.columns)'。请粘贴打印出的内容。 –

+0

你有什么方法可以确定你应该在哪里剪下这个名字?如果你不这样做,它会很难自动执行... – Carele

+0

这就是问题出现的地方,不幸的是标题名称的长度不同而且没有特定的格式。 – Sahil

回答

1

如果你的标题是类似的东西:

header = ['ABCDEFG'] 

基于指数,你可以写:

header = [header[0][:2], header[0][2], header[0][3], header[0][4:]] 

你得到:

['AB', 'C', 'D', 'EFG'] 
+0

我不建议盲目硬编码这样的序列。 –

+0

@coldspeed同意,但你解决切片可能是一个晦涩的解​​决方案... –

+0

此外,你是假设头是一个项目列表,这是错误的...和你的整个解决方案分崩离析,如果情况并非如此。 –

1

不管你列的当前如何是,你可以先加入他们,并使用itertools

from itertools import islice 

seq = [2, 1, 1, 3] 
it = iter(''.join(df.columns)) 
df.columns = [''.join(islice(it, 0, i)) for i in seq] 

这个分配['AB', 'C', 'D', 'EFG']df.columns。这种技术的优点是你可以很容易地通过编辑seq列表和没有别的来很好地控制分割的大小和数量。