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

使用Excel数据更新PySimpleGUI窗口时遇KeyError: 'UPC'问题求助

问题分析与修复方案

错误原因拆解

  1. 逻辑判断颠倒:当前代码仅当-UPC-输入框为空时才执行搜索,完全违背需求逻辑,应该是输入UPC后(非空)才触发查询。
  2. DataFrame列引用错误:KeyError: 'UPC'说明你的item_info DataFrame里没有名为UPC的列,或者代码里没正确用列名做匹配条件——当前用item_info[0]取第一列的写法,和错误提示里的UPC列不对应。
  3. DataFrame遍历方式错误:for records in records:会遍历DataFrame的列名而非行数据,导致后续取值全错。
  4. 行数据取值语法错误:records[item_info['Item Number']]写法混乱,正确的行数据取值应该直接用列名字符串。

修正后的代码

def retrieve_info():
    # 去除输入首尾空格,仅当UPC非空时查询
    upc_input = values['-UPC-'].strip()
    if upc_input:
        # 假设你的DataFrame中存储UPC的列名为'UPC',用列名匹配搜索值
        # 如果UPC是第一列(无列名),改用item_info.iloc[:, 0] == upc_input
        records = item_info[item_info['UPC'] == upc_input]
        # 遍历匹配到的行数据
        for _, record in records.iterrows():
            window['-SKU-'].update(record['Item Number'])
            window['-DESCRIPTION-'].update(record['Item Description'])
            window['-UOM-'].update(record['UOM'])
            window['-LOCATION-'].update(record['LOCATION'])
        # 无匹配结果时清空字段(可选)
        if records.empty:
            window['-SKU-'].update('')
            window['-DESCRIPTION-'].update('')
            window['-UOM-'].update('')
            window['-LOCATION-'].update('')

额外注意事项

  • 确认item_info DataFrame的列名:UPC、Item Number、Item Description、UOM、LOCATION这些列名必须真实存在,且大小写完全一致。
  • 如果UPC是DataFrame的第一列(没有列名),把匹配条件改成item_info.iloc[:, 0] == upc_input。
  • 扫描UPC时可能带首尾空格,用.strip()可以避免因空格导致匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 10:40:31