2017-11-04 5 views
-1

この効果を得るには?列ヘッダーで作成された新しい列

入力データ:

val1 val2 val3 val4 
0 A1.1 A2.1 A3.1 A4.1 
1 A1.2 A2.2 A3.2 A4.2 
2 A1.3 A2.3 A3.3 A4.3 

および出力データ:A1.1、A1.2、A1.3は、列名です

new_column A1.1 A1.2 A1.3  
0 val2  A2.1 A2.2 A2.3 
1 val3  A3.1 A3.2 A3.3 
2 val4  A4.1 A4.2 A4.3 

。 私はピボットをアンピボットしようとしましたが、スタックを解除しましたが、意図した効果が得られません。 + reset_indexset_index + T + rename_axis

+0

あなたのコードはありますか?あなたが何かを最初に試しなければ、私たちは知らない。 –

+0

@ Mike Tung私は試みましたが、時にはあなたの解決策を課すことなく問題を提示しなければならないと思います。 –

答えて

2

用途:

df = df.set_index('val1').T.rename_axis('new_col').reset_index().rename_axis(None,1) 
print (df) 
    new_col A1.1 A1.2 A1.3 
0 val2 A2.1 A2.2 A2.3 
1 val3 A3.1 A3.2 A3.3 
2 val4 A4.1 A4.2 A4.3 
+1

それでした! :) –

1

​​rename_axis

df.set_index('val1').T.rename_axis(None,1) 
Out[499]: 
     A1.1 A1.2 A1.3 
val2 A2.1 A2.2 A2.3 
val3 A3.1 A3.2 A3.3 
val4 A4.1 A4.2 A4.3 

df.set_index('val1').T.rename_axis(None,1).reset_index().rename(columns={'index':'new_col'}) 
Out[524]: 
    new_col A1.1 A1.2 A1.3 
0 val2 A2.1 A2.2 A2.3 
1 val3 A3.1 A3.2 A3.3 
2 val4 A4.1 A4.2 A4.3 
+0

インデックスのリセットと名前の変更もここで必要です。 – Dark

+0

これは良い解決策ですが、@ jezraelは同時に新しい列を追加しました:) –

+0

@Bharath Ok、updated – Wen

関連する問題