我有 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']})
我感谢所有的投入,提前致谢。
您需要合并两个数据集并从第二个数据集中删除重复项:
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