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

Pandas df.query结合simple_term_menu筛选时触发KeyError求助

问题解决:df.query调用报错KeyError的排查与修复

问题根源

你在生成查询字符串时,额外给整个表达式套了一层单引号,导致df.query错误地将整个字符串当成列名去查找,触发了KeyError。

硬编码的有效查询字符串是Name=="Tom" or Name=="Bob",而你通过queryStr= "'{}'".format(queryStr)处理后,实际字符串变成了'Name=="Tom" or Name=="Bob"'(注意外层的单引号),df.query会尝试寻找名为Name=="Tom" or Name=="Bob"的列,这显然不存在。

修复后的代码

去掉多余的单引号包裹步骤即可:

arrTemp=['Tom', 'Bob', 'Karen', 'Bill', 'Stefan', 'Jack', 'Debbie']
terminal_menu = TerminalMenu(arrTemp,
    multi_select=True,
    show_multi_select_hint=True,
)
menu_entry_indices = terminal_menu.show()

# 直接生成查询表达式,无需额外添加外层单引号
queryStr = ' or '.join([f'Name=="{v}"' for v in terminal_menu.chosen_menu_entries])
subs = df.query(queryStr)

验证说明

修复后生成的queryStr和硬编码的有效查询字符串完全一致,df.query能够正确解析表达式,筛选出符合条件的行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:05:26