You need to enable JavaScript to run this app. 如何修复CSV导入函数,用字典值作为DataFrame名并按Nr分组拼接
优惠活动
大模型
产品
解决方案
定价
更多

如何修复CSV导入函数,用字典值作为DataFrame名并按Nr分组拼接

原代码存在的核心问题
  • 未实现自定义命名DataFrame的核心目标:现有代码的操作是把字典里对应New_ID键存储的字符串值(比如'0905a')直接替换为读取得到的DataFrame对象,并没有创建名为0905a的独立DataFrame变量,后续直接调用0905a时会触发NameError报错。
  • 路径硬编码无法适配多文件夹复用需求:写死的C:/path/路径无法灵活切换读取目录,每次换文件夹都需要修改函数内部代码。
  • 你提供的字典列表示例存在语法错误:第一个字典的'Nr'值0905缺失开头的单引号,直接运行会触发语法解析失败。
适配需求的可落地方案

核心思路是不要强行动态创建独立的全局变量(这类写法对初学者极不友好,后续调试、溯源难度极高),改用结构化字典存储所有自定义命名的DataFrame,完全覆盖你后续的格式调整、分组合并需求。

改造后的可复用导入函数

import pandas as pd
from collections import defaultdict

def import_csv(CSVdict, base_path="C:/默认存储路径/"):
    # 初始化存储容器:键为自定义的New_ID,值关联对应DataFrame和分组用的Nr标识
    df_store = {}
    for item in CSVdict:
        # 拼接完整CSV文件路径
        full_path = f"{base_path}{item['csvDatei']}.csv"
        # 按原配置读取CSV文件
        df = pd.read_csv(full_path, sep=';', decimal=',')
        # 按自定义规则存入存储容器
        df_store[item['New_ID']] = {
            "data": df,
            "group_tag": item['Nr']
        }
    return df_store

调用示例

先修正原字典的语法错误,再传入对应路径调用即可:

# 修正语法后的映射字典
csv_mapping = [
    {'Nr': '0905', 'New_ID': '0905a', 'csvDatei': 'LG__380'},
    {'Nr': '0905', 'New_ID': '0905b', 'csvDatei': 'LG__376'},
    {'Nr': '0955', 'New_ID': '0955a', 'csvDatei': 'LG__53'},
    {'Nr': '0955', 'New_ID': '0955b', 'csvDatei': 'LG__50'}
]
# 更换读取文件夹时,仅需修改base_path参数,无需改动函数内部逻辑
my_dfs = import_csv(csv_mapping, base_path="D:/目标读取文件夹/")

后续格式调整、按Nr合并的实现

# 1. 逐个对存储的DataFrame做独立格式调整
for new_id, info in my_dfs.items():
    # 在此处替换为你实际需要的格式调整逻辑,比如列名修改、数据类型转换、空值处理等
    info["data"] = info["data"].dropna()
    info["data"]["source_tag"] = new_id # 可添加溯源标记列

# 2. 按Nr字段值对DataFrame分组
grouped_dfs = defaultdict(list)
for info in my_dfs.values():
    grouped_dfs[info["group_tag"]].append(info["data"])

# 3. 对同组的DataFrame执行pd.concat合并
final_result = {
    nr: pd.concat(df_list, ignore_index=True)
    for nr, df_list in grouped_dfs.items()
}

如果你确实需要让New_ID的字符串对应为可直接调用的独立变量,可以在导入完成后通过全局变量字典赋值实现,但不推荐初学者使用这类写法,会大幅降低代码可维护性。

内容的提问来源于stack exchange,提问作者J. Susan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 19:06:07