pandas DataFrame,根据另一个DF获取值

时间:2014-07-29 15:07:37

标签: python pandas

我有两个共享相同索引的DF

DF1包含DF2中的列名

             id1   id2
2010-01-01    a     b
2010-01-02    a     b
2010-01-03    b     c
2010-01-04    c     d

DF2包含实际值

              a     b    c    d
2010-01-01    1    10   100   -1
2010-01-02    2    20   200   -2
2010-01-03    3    30   300   -3
2010-01-04    4    40   400   -4

我想要的输出与DF1具有相同的模式,但在匹配的列名和索引上从DF2获取值

DFO

             id1     id2
2010-01-01    1       10
2010-01-02    2       20
2010-01-03    30      300
2010-01-04    400     -4

有没有一种快速的方法可以不用循环来一次构建一个DFo值?

由于

1 个答案:

答案 0 :(得分:1)

尝试df.lookup(),其中包含行/列索引列表和相应值的数组。

In [53]: df1
Out[53]: 
           id1 id2
2010-01-01   a   b
2010-01-02   a   b
2010-01-03   b   c
2010-01-04   c   d

In [54]: df2
Out[54]: 
            a   b    c  d
2010-01-01  1  10  100 -1
2010-01-02  2  20  200 -2
2010-01-03  3  30  300 -3
2010-01-04  4  40  400 -4

In [55]: for c in df1.columns:
    ...:     df1[c] = df2.lookup(df1.index, df1[c])
    ...:     

In [56]: df1
Out[56]: 
            id1  id2
2010-01-01    1   10
2010-01-02    2   20
2010-01-03   30  300
2010-01-04  400   -4