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

如何从导入的py文件中调用字典完成DataFrame的map映射操作

问题解决

报错根因

Python 中mc.i的写法是直接查找mc模块下名为i的固定属性,不会将循环变量i存储的字符串值动态解析为属性名,因此会触发module 'mc' has no attribute 'i'的报错。同时第一种写法中调用dir()属于多余操作,pandas.Series.map()直接接收映射字典作为入参即可。

正确实现代码

import mc

# factor_list为你提前定义的、和mc中字典同名的DataFrame源列名列表
for col in factor_list:
    # 动态从mc模块中获取对应名称的映射字典
    map_dict = getattr(mc, col)
    # 按照规则生成新列名,修正了原写法漏加下划线的问题
    new_col = f"{col}_factors"
    # 执行值映射
    bi[new_col] = bi[col].map(map_dict)
    # 打印校验结果
    print(bi[new_col].head())

可选优化项

  • 增加属性存在性校验,避免因列名和mc中字典名不匹配报错:
for col in factor_list:
    if not hasattr(mc, col):
        print(f"mc模块中不存在名为{col}的字典,已跳过")
        continue
    # 后续映射逻辑同上
  • 如果你没有提前定义factor_list,可以自动提取mc模块中所有自定义字典作为映射源:
# 过滤模块内置属性,仅保留值为字典的自定义属性
factor_list = [k for k, v in vars(mc).items() if not k.startswith("__") and isinstance(v, dict)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:39:05