2017-08-24 107 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列表和沒有別的來很好地控制分割的大小和數量。