2017-09-06 4 views
1

pandasデータフレームをピボットテーブルとマージしようとしていて、カラム名が変更されています。 1つの列にマージさせずにピボットから元の列名を保持できますか?ピボットテーブルとのマージでカラム名が変更される

df1: 

    pn number_of_records date  
A103310  0    2017-09-01 
B103309  0    2017-06-01 
C103308  0    2017-03-01 
D103307  2    2016-12-01 
E103306  2    2016-09-01 

ピボットテーブルでDF2:このデータフレームのマージを行う

pn     t1 
        a1 b1 c1 
A103310   3432 324 124 
B103309   342  123 984 
C103308   435  487 245 
D103307   879  358 234 
E103306   988  432 235 

は私を与える:

pn number_of_records date (t1,a1) (t1,b1) (t1,c1) 

df1_df2 = pd.merge(df1,df2,how="left",on="pn") 

私として列名を与えます

代わりにどうすればいいですか:

pn number_of_records date   t1 
          a1 b1 c1 

マージ後のデータフレームでは?

答えて

1

df1

pd.concat([df1], axis=1, keys=['']).swaplevel(0, 1, 1).merge(df2, on='pn') 

     pn number_of_records  date t1   
              a1 b1 c1 
0 A103310     0 2017-09-01 3432 324 124 
1 B103309     0 2017-06-01 342 123 984 
2 C103308     0 2017-03-01 435 487 245 
3 D103307     2 2016-12-01 879 358 234 
4 E103306     2 2016-09-01 988 432 235 
の列にレベルを追加します。
関連する問題