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

如何从CSV文件名提取字符添加至DataFrame列名并合并数据

解决方案:给CSV列名添加来源标识并整理数据

我来帮你搞定这个需求!我们需要从文件名里提取关键标识,给每个DataFrame的非ID列加上来源后缀,这样既能区分数据来源,又能方便后续基于ID合并数据。下面是修改后的完整代码和详细说明:

核心步骤拆解

  1. 解析文件名:从aa_bbb_2009_10这类命名里,提取出aa_10这种关键标识,用来标记列名来源
  2. 重命名列名:保留ID列不变,其他列统一加上_{标识}的后缀
  3. 统一存储数据:用字典存储处理后的DataFrame,方便后续调用或合并操作

修改后的完整代码

import glob
import os
import pandas as pd

path = ".../folder/"
all_files = glob.glob(os.path.join(path, "*.csv"))
# 用字典存储处理后的DataFrame,键为来源标识,方便后续查找调用
processed_dfs = {}

for file in all_files:
    # 获取不带后缀的纯文件名
    file_name = os.path.splitext(os.path.basename(file))[0]
    # 分割文件名成列表:比如aa_bbb_2009_10 -> ['aa', 'bbb', '2009', '10']
    name_parts = file_name.split('_')
    # 组合我们需要的来源标识:第一个前缀 + 最后一个数字部分
    source_tag = f"{name_parts[0]}_{name_parts[3]}"
    
    # 读取CSV文件
    dfn = pd.read_csv(file)
    
    # 批量重命名列名:ID列保持不变,其他列加上来源标识后缀
    new_columns = {
        col: f"{col}_{source_tag}" if col != 'ID' else col 
        for col in dfn.columns
    }
    dfn = dfn.rename(columns=new_columns)
    
    # 将处理好的DataFrame存入字典
    processed_dfs[source_tag] = dfn

# 如果你需要单独取出指定的DataFrame,直接从字典里提取即可
df1 = processed_dfs['aa_10']
df2 = processed_dfs['aa_100']
df3 = processed_dfs['xx_10']
df4 = processed_dfs['xx_100']

# 后续如果需要基于ID合并所有数据,可以用链式merge操作
merged_df = df1.merge(df2, on='ID').merge(df3, on='ID').merge(df4, on='ID')

关键细节说明

  • 文件名解析逻辑:针对你给出的前缀_bbb_年份_数字命名格式,我们取第1段前缀(aa/xx)和最后一段数字(10/100)组合成标识,完全匹配你的需求。
  • 列名重命名:用字典推导式快速生成新列名,确保ID列作为合并键保持不变,其他列都带上清晰的来源标记,比如v1变成v1_aa_10。
  • 字典存储优势:相比单独命名df1-df4,字典存储更灵活,后续新增同格式的CSV文件时,代码不需要额外修改就能自动处理。

这样处理后,每个DataFrame的列名都会清晰显示数据来源,后续的合并操作也能轻松基于ID完成啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:48:23