2017-08-24 3 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つの項目リストであると仮定していますが、間違っています。 –

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のリストを編集するだけで、分割のサイズと数を簡単に制御できることです。他のものはです。

関連する問題