批量读取同前缀CSV文件并生成含文件名的结果DataFrame
批量处理CSV文件并合并结果到单DataFrame
当然可以实现这个需求!这是非常典型的批量数据处理场景,我给你准备了一个完全可复现的示例,你可以直接照搬修改,适配自己的实际代码逻辑。
第一步:准备测试用CSV文件
先在你的工作目录下创建几个测试用的CSV文件,方便验证代码效果:
myfile_1.csv
col1,col2 10,20 30,40 50,60
myfile_2.csv
col1,col2 70,80 90,100 110,120
myfile_3.csv
col1,col2 130,140 150,160 170,180
第二步:编写批量处理代码
下面的代码会自动遍历指定路径下以myfile_为前缀的CSV文件,对每个文件执行自定义处理逻辑,最后把所有结果合并到一个包含文件名和你的5个输出列的DataFrame中:
import pandas as pd import os # 定义你的自定义处理函数(这里用5个统计指标作为示例,替换成你自己的代码) def process_single_file(file_path): # 读取CSV文件 df = pd.read_csv(file_path) # --- 这里替换成你自己的核心代码 --- # 示例:生成5个输出变量/列 output_vars = { "sum_col1": df["col1"].sum(), "mean_col2": df["col2"].mean(), "max_col1": df["col1"].max(), "min_col2": df["col2"].min(), "total_rows": len(df) } # --- 核心代码结束 --- # 添加文件名到结果中 output_vars["file_name"] = os.path.basename(file_path) return pd.Series(output_vars) # 设置工作目录(替换成你的CSV文件所在路径) working_dir = "./" # 筛选出所有以"myfile_"为前缀的CSV文件 target_files = [ os.path.join(working_dir, f) for f in os.listdir(working_dir) if f.startswith("myfile_") and f.endswith(".csv") ] # 批量处理所有文件并合并结果 final_result = pd.concat( [process_single_file(file) for file in target_files], axis=1 ).T # 调整列顺序(把文件名放到第一列) final_result = final_result[["file_name", "sum_col1", "mean_col2", "max_col1", "min_col2", "total_rows"]] # 打印结果 print(final_result) # 可选:把结果保存为新的CSV文件 final_result.to_csv("combined_results.csv", index=False)
代码说明
- 自定义处理函数:
process_single_file是核心部分,你只需要把自己的代码替换掉示例中的统计逻辑,确保最后返回的字典包含你的5个输出变量,再加上文件名即可。 - 文件筛选:通过列表推导式筛选出符合前缀和格式要求的CSV文件,避免处理无关文件。
- 结果合并:用
pd.concat把每个文件的处理结果合并成最终的DataFrame,.T是转置操作,让每个文件的结果成为一行。 - 列顺序调整:把文件名放到第一列,让结果更清晰易读。
运行代码后,你会得到类似这样的输出:
file_name sum_col1 mean_col2 max_col1 min_col2 total_rows 0 myfile_1.csv 90 40 50 20 3 1 myfile_2.csv 270 100 110 80 3 2 myfile_3.csv 450 160 170 140 3
内容的提问来源于stack exchange,提问作者Pozmanski
相关产品推荐
相关产品推荐

