与数据透视表的合并会更改列名称

时间:2017-09-06 03:44:40

标签: python pandas

我正在尝试将pandas数据框与数据透视表合并,并更改列名称。我可以保留枢轴中的原始列名称而不将它们合并到一个列中吗?

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

在这个数据帧上进行合并给了我:

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

给我的列名称为:

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

我怎样才能将它们作为:

pn  number_of_records date         t1
                             a1    b1   c1
合并后的数据框中的

1 个答案:

答案 0 :(得分: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