デリミタなしで、長さの異なる名前をつけた連続したフォーマット(ファイルの最初のセルに)で書かれたすべてのヘッダを持つデータセットがあります。パンダのヘッダを分割する
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
を。これどうやってするの?
デリミタなしで、長さの異なる名前をつけた連続したフォーマット(ファイルの最初のセルに)で書かれたすべてのヘッダを持つデータセットがあります。パンダのヘッダを分割する
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
を。これどうやってするの?
あなたのヘッダーはそのようなものである場合:
header = ['ABCDEFG']
指標に基づいて、あなたが書くことができます。
header = [header[0][:2], header[0][2], header[0][3], header[0][4:]]
あなたが得る:
かかわらず、どのようにあなたの列現在の['AB', 'C', 'D', 'EFG']
このようなシーケンスを盲目的にハードコーディングすることはお勧めしません。 –
@coldspeed同意しますが、スライスのソリューションはあいまいな解決策になる可能性があります... –
また、ヘッダーが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
のリストを編集するだけで、分割のサイズと数を簡単に制御できることです。他のものはです。
'print(df.columns)'を実行します。印刷されたものを貼り付けてください。 –
名前を切り取るべき場所を決める方法はありますか?もしあなたがしなければ、それは自動的にそれを行うのはかなり難しいでしょう... – Carele
それはどこに問題が来る、残念ながらヘッダーの名前は長さが異なり、特定の形式を持っていません。 – Sahil