两个大小不同的 DataFrame 之间的字符串匹配,并返回匹配的索引和值

string match between two dataframe with difference sizes and return matching index and value

提问人:Bensa 提问时间:10/19/2023 最后编辑:not_speshalBensa 更新时间:10/19/2023 访问量:24

问:

我有 2 个不同大小的数据帧,我想比较并找到匹配的第一次出现。

较短的数据帧没有重复值,第二个数据帧具有相同值的多个实例。

对于较短数据帧 (df1) 中的每个行值,我想找到匹配字符串的第一个实例,并返回较大数据帧 (df2) 中另一列的索引和值。

df1 =  pd.DataFrame({'type':['Apple3','Pear28','Banana0','Lime46']}) 
df2 =  pd.DataFrame({'type':['Apple2','Apple3','Lime46','Apple3','Lime46','Pear28'],'color':['red','orange','green','orange','green','yellow']})

预期结果:

df1 =  pd.DataFrame({'type':['Apple3','Pear28','Banana0','Lime46'],'ind':['1','5','NaN','2'],'color':['orange','yellow','NaN','green']})

我感谢所有的意见,提前致谢。

python pandas 字符串 数据帧 匹配

评论


答:

1赞 Suraj Shourie 10/19/2023 #1

您需要合并两个数据集,并从第二个数据集中删除重复项:

df1 = df1.merge(df2.reset_index().drop_duplicates(['type', 'color']), how='left')
print(df1)

输出:

      type  index   color
0   Apple3    1.0  orange
1   Pear28    5.0  yellow
2  Banana0    NaN     NaN
3   Lime46    2.0   green