Python 比较两个具有不同列名的数据框,并使用第二个数据框中的列更新第一个数据框
我正在处理两个具有不同列名和维度的数据帧 第一个数据帧“df1”包含单列“name”,其名称需要位于第二个数据帧中。如果匹配,则需要返回来自df2第一列df2[0]的值并将其添加到结果中 第二个数据帧“df2”有多个列,没有标题。它包含所有可能的小名和全名。任何列都可以有需要匹配的“名称” 目标:在“df2”中的“df1”中找到名称,如果匹配,则从df2的第一列返回值,并添加到df1的相应行中 df1 名称 ab 亚历克斯 上下快速移动 罗伯特 账单 尝试通过Python 比较两个具有不同列名的数据框,并使用第二个数据框中的列更新第一个数据框,python,pandas,dataframe,compare,Python,Pandas,Dataframe,Compare,我正在处理两个具有不同列名和维度的数据帧 第一个数据帧“df1”包含单列“name”,其名称需要位于第二个数据帧中。如果匹配,则需要返回来自df2第一列df2[0]的值并将其添加到结果中 第二个数据帧“df2”有多个列,没有标题。它包含所有可能的小名和全名。任何列都可以有需要匹配的“名称” 目标:在“df2”中的“df1”中找到名称,如果匹配,则从df2的第一列返回值,并添加到df1的相应行中 df1 名称 ab 亚历克斯 上下快速移动 罗伯特 账单 尝试通过concat()、merge()、d
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…太好了….顺便说一句,如果这个答案对您有帮助,请尝试接受答案,以表明问题已得到解决…谢谢:)