Python 比较两个具有不同列名的数据框,并使用第二个数据框中的列更新第一个数据框

Python 比较两个具有不同列名的数据框,并使用第二个数据框中的列更新第一个数据框,python,pandas,dataframe,compare,Python,Pandas,Dataframe,Compare,我正在处理两个具有不同列名和维度的数据帧 第一个数据帧“df1”包含单列“name”,其名称需要位于第二个数据帧中。如果匹配,则需要返回来自df2第一列df2[0]的值并将其添加到结果中 第二个数据帧“df2”有多个列,没有标题。它包含所有可能的小名和全名。任何列都可以有需要匹配的“名称” 目标:在“df2”中的“df1”中找到名称,如果匹配,则从df2的第一列返回值,并添加到df1的相应行中 df1 名称 ab 亚历克斯 上下快速移动 罗伯特 账单 尝试通过concat()、merge()、d

我正在处理两个具有不同列名和维度的数据帧

第一个数据帧“df1”包含单列“name”,其名称需要位于第二个数据帧中。如果匹配,则需要返回来自df2第一列df2[0]的值并将其添加到结果中

第二个数据帧“df2”有多个列,没有标题。它包含所有可能的小名和全名。任何列都可以有需要匹配的“名称”

目标:在“df2”中的“df1”中找到名称,如果匹配,则从df2的第一列返回值,并添加到df1的相应行中

df1

名称 ab 亚历克斯 上下快速移动 罗伯特 账单 尝试通过
concat()
merge()
drop()
rename()
reset\u index()
方法:

df=(pd.concat((df1.merge(df2,left_on='name',right_on=x) for x in df2.columns))
    .drop(['1','2','3'],1)
    .rename(columns={'0':'matched_name'})
    .reset_index(drop=True))
df的输出

    name    matched_name
0   robert  robert
1   ab      abram
2   alex    alexander
3   bill    william
4   bob     robert

谢谢,成功了。由于数据类型不同,重命名无法工作,因此我转换了数据类型。@Samy ohh…太好了….顺便说一句,如果这个答案对您有帮助,请尝试接受答案,以表明问题已得到解决…谢谢:)