将数据框合并到多索引数据框

时间:2018-11-19 02:35:40

标签: python pandas dataframe multi-index

我有一个类似以下的数据框,它指示第1年的费用:

    b1  b2
t1  100 110
t2  100 120
t3  150 180

我还有另一个数据框,显示了这些年来成本的乘数:

    y1  y2      y3
t1  1   1.1     1.2
t2  1   1.08    1.15

我希望输出类似于以下内容(请注意,t3不在上面的数据框中,因此它的乘数为1):

t1  b1  y1  100
        y2  110
        y3  120
    b2  y1  110
        y2  121
        y3  132
t2  b1  y1  100
        y2  108
        y3  115
    b2  y1  120
        y2  129.6
        y3  138
t3  b1  y1  150
        y2  150
        y3  150
     b2 y1  180
        y2  180
        y3  180

我该如何实现?

非常感谢您的提前帮助。

1 个答案:

答案 0 :(得分:1)

merge之后使用stack

newdf=df1.stack().reset_index().merge(df2.stack().reset_index(),on='level_0')
newdf.assign(v=newdf['0_x']*newdf['0_y']).set_index(['level_0','level_1_x','level_1_y']).v
Out[133]: 
    level_0  level_1_x  level_1_y
    t1       b1         y1           100.0
                        y2           110.0
                        y3           120.0
             b2         y1           110.0
                        y2           121.0
                        y3           132.0
    t2       b1         y1           100.0
                        y2           108.0
                        y3           115.0
             b2         y1           120.0
                        y2           129.6
                        y3           138.0
    Name: v, dtype: float64