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

Python Pandas实现Xlookup遇NameError:main_df1未定义求代码修正

修正代码解决NameError及实现Xlookup功能

错误原因

你遇到的NameError: name 'main_df1' is not defined是因为代码中引用了未定义的变量main_df1,实际应该使用之前读取源文件生成的df1变量。

完整修正代码

结合你的需求——从源Excel的Debt、Liquidity列匹配数据,批量填充到多个格式一致的目标文件的C17、C18单元格,以下是修正后的可运行代码:

import pandas as pd
from openpyxl import load_workbook

# 源文件路径
path_source = r"C:\Test source.xlsx"
# 多个目标文件路径列表,按需添加
destination_files = [
    r"C:\Stress Test Q4 2022\test.xlsx",
    r"C:\Stress Test Q4 2022\test2.xlsx"
]

# 读取源数据,将Fund name设为索引,提升查找效率
df_source = pd.read_excel(path_source, index_col="Fund name")

# 定义Xlookup逻辑函数
def xlookup(lookup_value, lookup_index, return_col, if_not_found: str = ''):
    try:
        return return_col.loc[lookup_value]
    except KeyError:
        return f'"{lookup_value}" not found!' if if_not_found == '' else if_not_found

# 批量处理每个目标文件
for dest_file in destination_files:
    # 用openpyxl加载目标文件,保留原有格式
    wb = load_workbook(dest_file)
    ws = wb.active
    
    # 假设目标文件A1单元格是要匹配的基金名称,按需修改位置
    target_fund = ws["A1"].value
    
    # 填充C17(Debt值)和C18(Liquidity值)
    ws["C17"].value = xlookup(target_fund, df_source.index, df_source["Debt"])
    ws["C18"].value = xlookup(target_fund, df_source.index, df_source["Liquidity"])
    
    # 保存修改后的文件
    wb.save(dest_file)
    print(f"处理完成:{dest_file}")

关键修正说明

  • 替换未定义的main_df1为实际的源数据变量df_source,并重命名变量提升可读性
  • 使用openpyxl操作Excel单元格,避免pandas覆盖目标文件原有格式
  • 支持批量处理多个目标文件,只需在destination_files列表中添加路径
  • 优化查找逻辑,利用DataFrame索引实现更高效的匹配

注意事项

  • 确保源文件Fund name列无重复值,否则会返回第一个匹配项
  • 按需调整目标文件中用于匹配的基金名称单元格位置(示例中是A1)
  • 运行前需安装依赖库:pip install pandas openpyxl

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:25:22