You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Pandas提取w_results中不在w_runnable的Item记录?

解决方案

你可以通过两种方式实现需求:

方法一:基于现有merge结果筛选

在左连接之后,筛选出右表字段(比如Type_y或Score_y)为NaN的行,然后只保留左表的原始列,最后重命名列名恢复原样:

import pandas as pd

w_results = 'w_results.xlsx'
w_runnable = 'w_runnable.xlsx'

df_results_mylist = pd.read_excel(w_results, sheet_name='my_list')
df_runnable_mylist = pd.read_excel(w_runnable, sheet_name='my_list')

# 左连接,添加后缀区分左右表字段
left_join = pd.merge(df_results_mylist,
                     df_runnable_mylist,
                     on='Item',
                     how='left',
                     suffixes=('_left', '_right'))

# 筛选右表字段为空的行,保留左表原始列
unmatched_records = left_join[left_join['Type_right'].isna()][['Item', 'Type_left', 'Score_left']]
# 重命名列名
unmatched_records = unmatched_records.rename(columns={'Type_left': 'Type', 'Score_left': 'Score'})

print(unmatched_records)

方法二:直接用isin筛选(更简洁)

直接判断左表的Item是否不在右表的Item集合中,一步筛选出目标记录:

import pandas as pd

w_results = 'w_results.xlsx'
w_runnable = 'w_runnable.xlsx'

df_results_mylist = pd.read_excel(w_results, sheet_name='my_list')
df_runnable_mylist = pd.read_excel(w_runnable, sheet_name='my_list')

# 筛选Item不在右表中的记录
unmatched_records = df_results_mylist[~df_results_mylist['Item'].isin(df_runnable_mylist['Item'])]

print(unmatched_records)

两种方法最终都会输出你需要的结果:

Item    Type  Score
2     paper   thing     24
4      lamp   thing      5
5   jessica  person     92
8     jacob  person     83

内容的提问来源于stack exchange,提问作者tadm123

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 08:35:01