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

问题描述 投票:0回答:1

我有 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 string dataframe match
1个回答
0
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.