我正在处理两个具有不同列名和维度的数据帧。
第一数据帧";df1";包含单列";name";需要在第二数据帧中定位具有名称的。如果匹配,则需要返回df2第一列df2[0]中的值,并将其添加到result_df 中
第二数据帧";df2";有多列,但没有标题。这包含了所有可能的小名和全名。任何一列都可以具有";name";需要匹配
目标:在";df1";在";df2";如果匹配,则返回df2第一列的值,并将其添加到df1 的相应行中
df1
name |
---|
ab |
亚历克斯 |
鲍勃 |
账单 |
通过concat()
、merge()
、drop()
、rename()
和reset_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