Python实现文件夹内相邻CSV文件指定列逐次相减并导出
前置准备
- 先安装数据处理依赖pandas,打开命令提示符/终端执行命令:
pip install pandas - 把你所有的
example*_result.csv文件放到同一个空文件夹里,后续脚本也放在这个文件夹运行 - 确保所有CSV的结构和你给出的示例一致:包含TestID、Result1、Result2、Result3四列,且TestID顺序、总行数完全相同,避免计算错位
完整Python脚本
import os import pandas as pd # 配置参数 target_columns = ['Result1', 'Result2', 'Result3'] # 需要计算差值的列 file_prefix = 'example' file_suffix = '_result.csv' # 获取当前脚本所在文件夹下所有符合命名规则的CSV文件 current_dir = os.path.dirname(os.path.abspath(__file__)) all_files = [f for f in os.listdir(current_dir) if f.startswith(file_prefix) and f.endswith(file_suffix)] # 按文件名里的数字序号排序,避免字符串排序导致的顺序错乱 def get_file_num(filename): num_part = filename.replace(file_prefix, '').replace(file_suffix, '') return int(num_part) all_files.sort(key=get_file_num) # 逐对读取相邻文件计算差值 for i in range(1, len(all_files)): prev_file = all_files[i-1] curr_file = all_files[i] # 读取两个文件的数据 df_prev = pd.read_csv(os.path.join(current_dir, prev_file)) df_curr = pd.read_csv(os.path.join(current_dir, curr_file)) # 构建结果数据框,保留TestID列 df_res = pd.DataFrame() df_res['TestID'] = df_curr['TestID'] # 逐列计算差值(当前文件值 - 前一个文件值) for col in target_columns: df_res[col] = df_curr[col] - df_prev[col] # 保存结果,第一对差值存为result1.csv,依次类推 output_name = f'result{i}.csv' df_res.to_csv(os.path.join(current_dir, output_name), index=False) print(f'已完成计算,结果已保存为:{output_name}')
运行说明
- 把上面的代码复制保存为
calc_diff.py,放到存CSV的文件夹里 - 双击运行或者在终端执行
python calc_diff.py即可 - 运行完成后文件夹里会生成
result1.csv到result4.csv四个文件,分别对应example2-example1、example3-example2、example4-example3、example5-example4的三列差值 - 如果运行报错,优先检查所有CSV文件的列名是否拼写正确、每个文件的行数是否一致,不要有缺失的行或者多余的表头
如果你后续要增加更多example文件,不需要修改脚本,只要保持
example+数字+_result.csv的命名格式,脚本会自动按序号识别计算。
内容的提问来源于stack exchange,提问作者user13112926
相关产品推荐
相关产品推荐

