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

如何在Python中为CSV添加提取自文件名的StatementDate列?

解决方案

1. 用正则提取文件名中的日期

当然可以,你的文件名里日期是MM-DD-YYYY格式,用\d{2}-\d{2}-\d{4}这个正则模式就能精准匹配出两位月-两位日-四位年的日期串。

示例代码:

import re

filename = "011J9O00_WA_07-10-2024.csv"
# 匹配并提取日期
date_match = re.search(r'\d{2}-\d{2}-\d{4}', filename)
statement_date = date_match.group() if date_match else None

2. 解决"data is not defined"报错并完成列插入

你遇到的报错是因为没把CSV内容正确读取到DataFrame对象里,或者变量名搞混了(比如定义了data却用df调用)。完整流程如下:

import re
import pandas as pd

filename = "011J9O00_WA_07-10-2024.csv"

# 第一步:读取CSV到DataFrame,这步是核心,缺失会导致变量未定义报错
df = pd.read_csv(filename)

# 提取日期
date_match = re.search(r'\d{2}-\d{2}-\d{4}', filename)
if not date_match:
    raise ValueError("文件名中未找到符合格式的日期")
statement_date = date_match.group()

# 插入列到第0位,直接传入日期值会自动填充整列所有行
df.insert(loc=0, column='StatementDate', value=statement_date)

# 保存修改后的CSV文件
df.to_csv(f"updated_{filename}", index=False)

批量处理多个CSV的情况

如果要处理文件夹下所有CSV文件,套个循环即可:

import os
import re
import pandas as pd

folder_path = "./your_csv_folder"  # 替换成你的CSV文件夹路径

for filename in os.listdir(folder_path):
    if filename.endswith(".csv"):
        file_full_path = os.path.join(folder_path, filename)
        df = pd.read_csv(file_full_path)
        
        date_match = re.search(r'\d{2}-\d{2}-\d{4}', filename)
        if date_match:
            statement_date = date_match.group()
            df.insert(loc=0, column='StatementDate', value=statement_date)
            # 覆盖原文件保存,或者重命名为新文件
            df.to_csv(file_full_path, index=False)
            # 重命名保存示例:df.to_csv(os.path.join(folder_path, f"processed_{filename}"), index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 12:56:02