如何在保留对应key值的前提下找出两个DataFrame产品列的差异?
找出DataFrame产品列差异并保留对应key值
直接用集合操作会丢失key关联信息,用pandas的isin()方法可以高效筛选出df2中product列不在df1里的行,同时完整保留对应的key值。
步骤代码
首先修正你代码里的拼写错误(pd.Dataframe应为pd.DataFrame),然后执行筛选:
import pandas as pd # 定义两个DataFrame df1 = pd.DataFrame({"product":['apples', 'bananas', 'oranges', 'kiwi']}) df2 = pd.DataFrame({"product":['apples', 'aples', 'appples', 'banans', 'oranges', 'kiwki'], "key": [1, 2, 3, 4, 5, 6]}) # 筛选df2中product不在df1里的行 result_df = df2[~df2['product'].isin(df1['product'])]
筛选结果
执行后result_df的内容为:
product key 1 aples 2 2 appples 3 3 banans 4 5 kiwki 6
转换成你想要的列表格式
如果需要输出成你指定的列表形式,可提取列数据:
product_list = result_df['product'].tolist() key_list = result_df['key'].tolist() print(f"result = {product_list}[{key_list}]")
输出结果:
result = ['aples', 'appples', 'banans', 'kiwki'][[2, 3, 4, 6]]
原理说明
df2['product'].isin(df1['product'])会生成一个布尔序列,标记df2的product是否存在于df1中;前面加~取反,就能筛选出不存在的行,完美保留key与product的关联关系,避免集合操作丢失信息的问题。
内容的提问来源于stack exchange,提问作者Dominique Barnes
相关产品推荐
相关产品推荐

