Python 返回数据帧中的备用列
我有两个数据帧。数据框A是一个实验性的数据框,它包含一个已使用的事物列表(以及日期等)。数据帧B是参考数据帧。数据帧A和B具有匹配的索引号。我想用索引号匹配的数据帧B中的额外信息更新数据帧A 比如说 dfA dfB 实际上,参考数据帧比实验数据帧大得多。我想在dataframe a中创建一个新列,根据匹配的引用使用dataframe B中的值。我试过了《在哪里》和《在哪里》,但是这部系列的长度不匹配造成了一个错误。 我尝试过使用merge,但由于dataframe A重复引用值,合并后的dataframe有太多行。Python 返回数据帧中的备用列,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我有两个数据帧。数据框A是一个实验性的数据框,它包含一个已使用的事物列表(以及日期等)。数据帧B是参考数据帧。数据帧A和B具有匹配的索引号。我想用索引号匹配的数据帧B中的额外信息更新数据帧A 比如说 dfA dfB 实际上,参考数据帧比实验数据帧大得多。我想在dataframe a中创建一个新列,根据匹配的引用使用dataframe B中的值。我试过了《在哪里》和《在哪里》,但是这部系列的长度不匹配造成了一个错误。 我尝试过使用merge,但由于dataframe A重复引用值,合并后的data
有没有一种有效的方法可以在不为每个参考创建新系列或列的情况下执行此操作?使用
和设置索引
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
你可以做一个简单的
join
假设您的索引在两个数据帧中都是REF
,您只需
dfA.join(dfB)
完整代码:
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)
谢谢,原来我的参考系中有一些重复的数据,这导致了一些有趣的结果,你的代码真的很有帮助。谢谢,原来我的参考系中有一些重复的数据,这导致了一些有趣的结果,你的代码真的很有帮助。
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
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)