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

如何按名称标识与长度筛选合并目录下的三类CSV DataFrame?

解决多CSV文件按规则合并DataFrame的Python函数完善方案

我帮你把这个函数的逻辑补全,直接上可运行的代码,每一步都讲得明明白白:

首先得确保你导入了需要的基础库:

import os
import pandas as pd

然后是完善后的完整函数:

def Concat_Intermed_Dataframes(batchname, changebatch, my_path, filename):
    print("Start concatenating")
    # 初始化三个空列表,用来收集符合条件的DataFrame(批量收集后合并更高效)
    small_letters_dfs = []
    seo_update_dfs = []
    new_term_dfs = []
    
    # 拼接目标目录的完整路径,避免工作目录差异导致的文件找不到问题
    intermed_dir = os.path.join(my_path, changebatch, batchname, "intermed")
    List_For_Concat = os.listdir(intermed_dir)
    
    for element in List_For_Concat:
        # 拼接单个文件的完整路径
        file_full_path = os.path.join(intermed_dir, element)
        
        if "Small_Letters" in element:
            df = pd.read_csv(file_full_path)
            # 只保留有数据的DataFrame(行数>0)
            if len(df) > 0:
                small_letters_dfs.append(df)
        elif "SEO_Update" in element:
            df = pd.read_csv(file_full_path)
            if len(df) > 0:
                seo_update_dfs.append(df)
        elif "NewTerm" in element:
            df = pd.read_csv(file_full_path)
            if len(df) > 0:
                new_term_dfs.append(df)
    
    # 合并收集到的DataFrame,空列表返回空DataFrame避免报错
    concat_small = pd.concat(small_letters_dfs, ignore_index=True) if small_letters_dfs else pd.DataFrame()
    concat_seo = pd.concat(seo_update_dfs, ignore_index=True) if seo_update_dfs else pd.DataFrame()
    concat_newterm = pd.concat(new_term_dfs, ignore_index=True) if new_term_dfs else pd.DataFrame()
    
    return concat_small, concat_seo, concat_newterm

关键细节说明:

  • 用列表批量收集符合条件的DataFrame,最后一次性合并,比逐次合并效率更高;
  • 全程使用完整文件路径,避免因当前工作目录变化导致的文件读取失败;
  • 加入len(df) > 0的判断,严格过滤空数据的文件;
  • 合并时设置ignore_index=True,重置合并后DataFrame的索引,避免不同文件的索引重复混乱;
  • 处理空列表边界情况:如果某一类没有符合条件的文件,返回空的DataFrame,防止pd.concat抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 21:12:38