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

Python CSV文件筛选与合并需求:每日指定版本文件提取求助

解决方案:提取指定CSV文件并合并为DataFrame

以下是实现需求的具体步骤和代码:

步骤说明

  • 遍历目标目录,筛选出Account_History和Milestone两类CSV文件
  • 按日期和文件类别对文件分组
  • 对每组文件,优先选择文件名以_1500_revision1.csv结尾的文件;若不存在,则选择以_1500.csv结尾的文件
  • 读取所有选中文件,用pandas.concat合并为单个DataFrame

完整代码

import os
import pandas as pd
from collections import defaultdict

# 替换为你的实际目录路径
target_dir = "/path/to/your/csv/folder"

# 按(日期, 文件类别)分组存储文件路径
file_groups = defaultdict(list)

# 遍历目录筛选目标文件
for filename in os.listdir(target_dir):
    if filename.endswith(".csv") and ("Account_History" in filename or "Milestone" in filename):
        # 确定文件类别
        file_type = "Account_History" if "Account_History" in filename else "Milestone"
        # 提取日期:假设文件名格式为「类别_日期_时间后缀.csv」,按下划线分割取第2位为日期(可根据实际格式调整索引)
        parts = filename.split("_")
        if len(parts) >= 3:
            date_str = parts[1]
            file_groups[(date_str, file_type)].append(os.path.join(target_dir, filename))

# 筛选最终要读取的文件
selected_files = []
for (date, file_type), files in file_groups.items():
    # 优先找修订版
    revision_file = next((f for f in files if "_1500_revision1.csv" in f), None)
    if revision_file:
        selected_files.append(revision_file)
        print(f"选中 {date} {file_type} 修订版: {os.path.basename(revision_file)}")
    else:
        # 找原始1500版本
        original_file = next((f for f in files if "_1500.csv" in f), None)
        if original_file:
            selected_files.append(original_file)
            print(f"选中 {date} {file_type} 原始版: {os.path.basename(original_file)}")
        else:
            print(f"警告:{date} {file_type} 未找到符合条件的文件")

# 合并文件为DataFrame
if selected_files:
    dfs = [pd.read_csv(file) for file in selected_files]
    combined_df = pd.concat(dfs, ignore_index=True)
    print(f"合并完成,总记录数:{len(combined_df)}")
    # 可按需保存合并结果
    # combined_df.to_csv("combined_data.csv", index=False)
else:
    print("未找到任何符合条件的文件")

关键提示

  • 文件名适配:如果你的文件名日期位置和示例不同,需要调整parts[1]的索引值,确保能正确提取日期
  • 规则调整:后续若要修改文件优先级规则,只需调整筛选文件的条件判断逻辑即可
  • 异常处理:代码加入了未找到文件的警告,避免程序直接崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:42:50