如何在循环中保存修改后的DataFrame以实现多数据集合并
合并多数据集并统一时间列的实现方案
核心思路
- 遍历目标文件夹中的所有待合并文件,逐个读取为DataFrame
- 识别每个数据集中包含"time"的列,统一重命名为
time作为合并主键 - 将修改后的数据集暂存到列表中,循环结束后一次性合并为完整数据集
完善后的代码
import pandas as pd import os # 假设files_to_merge是待合并的文件名列表,folder是目标文件夹路径 complete_list = [] for file in files_to_merge: # 读取单个数据集 df_original = pd.read_csv(os.path.join(folder, file)) # 筛选所有含"time"的列(需不区分大小写可改成'time' in col.lower()) time_cols = [col for col in df_original.columns if 'time' in col] if time_cols: # 取第一个含time的列重命名为"time" df_original.rename(columns={time_cols[0]: "time"}, inplace=True) # 将修改后的数据集加入列表,避免被下一次循环覆盖 complete_list.append(df_original) else: print(f"警告:文件{file}中未找到含'time'的列,已跳过该文件") # 合并所有修改后的数据集 merged_df = pd.concat(complete_list, ignore_index=True) # 可选:将合并结果保存为新文件 merged_df.to_csv(os.path.join(folder, "merged_dataset.csv"), index=False)
关键细节说明
- 用
os.path.join拼接文件路径,避免因操作系统差异导致的路径错误 - 加入异常判断:若某文件无含"time"的列,会打印警告并跳过,防止代码中断
- 每次处理完数据集就追加到列表,确保修改后的结果被留存,不会被下一次循环的
df_original覆盖 - 最后用
pd.concat合并所有DataFrame,ignore_index=True重置合并后的索引,避免索引重复
内容的提问来源于stack exchange,提问作者Mahin GColab
相关产品推荐
相关产品推荐

