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

如何在Python Pandas中为DataFrame添加路径中的区域及CSV文件名列

解决方案

可以用Python的pathlib(处理路径更直观)结合pandas来完成这个需求,步骤如下:

  • 遍历所有目标CSV文件:用pathlib.Path.glob()递归匹配符合路径格式的文件
  • 解析路径提取关键信息:从文件路径中拆分出region和CustomerName
  • 给每个DataFrame添加列后收集,最后合并

完整代码示例

import pandas as pd
from pathlib import Path

# 定义根目录
root_dir = Path("data-output")

# 初始化空列表用于存储每个处理后的DataFrame
df_list = []

# 遍历所有符合格式的CSV文件
for csv_path in root_dir.glob("**/*.csv"):
    # 从路径中提取region:路径结构是data-output/region/month/xxx.csv,取倒数第三部分
    region = csv_path.parts[-3]
    # 提取CustomerName:取文件名(不含后缀)
    customer_name = csv_path.stem
    
    # 读取CSV文件
    df = pd.read_csv(csv_path)
    # 添加新列
    df["region"] = region
    df["CustomerName"] = customer_name
    
    # 将处理后的DataFrame加入列表
    df_list.append(df)

# 合并所有DataFrame
final_df = pd.concat(df_list, ignore_index=True)

# 可选:查看结果
print(final_df.head())

关键细节说明

  • pathlib.Path.glob("**/*.csv")会递归遍历data-output下所有子文件夹中的CSV文件,无需手动分层遍历
  • csv_path.parts会把路径拆分成元组,比如data-output/EU/10/Filename1.csv的parts是('data-output', 'EU', '10', 'Filename1.csv'),parts[-3]正好对应region
  • csv_path.stem直接获取文件名(不含.csv后缀),也就是需要的CustomerName

如果你的路径是绝对路径,parts[-3]依然有效,因为它是从路径末尾往前数第三部分,不受绝对/相对路径影响。

内容的提问来源于stack exchange,提问作者George C. Serban

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:20:35