我有两个共享相同索引的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值?
由于
答案 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