返回pandas数据帧中的备用列

时间:2018-06-04 16:05:32

标签: python pandas dataframe merge

我有两个数据帧。 Dataframe A是一个实验数据框,其中包含已使用的事物列表(以及日期等)。数据帧B是参考数据帧。数据帧A和B具有匹配的索引号。我想用Dataframe B中的额外信息更新Dataframe A,其中索引号匹配。

例如

DFA

REF
ABC
DEF
DEF
XYZ 

dfB

REF VALUE
ABC 1.23
DEF 2.22
XYZ 3.33

实际上,参考数据帧比实验数据帧大得多。我想在数据框A中创建一个新列,其中数据框B的值基于匹配的引用。我已经尝试了'is in',但是错误匹配系列的长度会产生错误。 我已尝试使用合并但由于数据框A重复参考值,合并的数据框有太多行。 是否有一种有效的方法可以在不为每个参考创建新系列或列的情况下执行此操作?

2 个答案:

答案 0 :(得分:1)

map set_index

一起使用
df1['res'] = df1.REF.map(df2.set_index('REF')['VALUE'])

   REF   res
0  ABC  1.23
1  DEF  2.22
2  DEF  2.22
3  XYZ  3.33

答案 1 :(得分:0)

You can do a simple join

Assuming your indexes are REF in both dataframes, you can simply do

dfA.join(dfB)

Full code:

import pandas as pd

dfA = pd.DataFrame(['ABC', 'DEF', 'DEF', 'XYZ'], columns=['REF'])
dfB = pd.DataFrame([['ABC', 1.23], ['DEF', 2.22], ['XYZ', 3.33]], columns=['REF', 'VALUE'])

dfA = dfA.set_index('REF')
dfB = dfB.set_index('REF')

dfA.join(dfB)