如何按指定SKU列表合并两个Pandas DataFrame?左连接无效求助
解决DataFrame合并筛选SKU的问题
嗨,我来帮你搞定这个问题!你现在遇到的问题是用左连接没得到想要的结果,这很正常——因为左连接(how='left')的作用是保留左表(df1)的所有行,只把右表(df2)中匹配的数据合并进来,所以它不会过滤掉df1里不在df2中的SKU行。
你想要的是只保留df1中SKU存在于df2里的行,这里有两种简单有效的方法:
方法1:使用内连接(Inner Merge)
内连接会只保留两个表中匹配成功的行,正好符合你的需求。修改你的代码为:
df3 = df1.merge(df2, how='inner', on='SKU')
运行后得到的df3就是你想要的结果,只包含df2中列出的SKU对应的行。
方法2:直接用isin()过滤df1
如果你不想做合并操作,也可以直接筛选df1的行,判断SKU是否在df2的SKU列表里:
df3 = df1[df1['SKU'].isin(df2['SKU'])]
这个方法更直接,结果和内连接完全一致。如果df2里没有重复的SKU,两种方法效果相同;如果df2有重复SKU,内连接会产生对应数量的重复行,而isin()不会——不过看你的df2是唯一SKU列表,两种方法都适用。
内容的提问来源于stack exchange,提问作者Ahamed Moosa
相关产品推荐
相关产品推荐

