如何用Python pandas将分用户多文件夹存储的多份CSV数据集合并为单一文件
多文件夹多CSV合并Python解决方案
先确保你已经安装了pandas依赖,未安装可执行命令:pip install pandas
完整可运行代码
import pandas as pd import os # 按需修改下方配置参数 ROOT_DIR = "DataPaper" # 存放所有用户文件夹的根路径 USER_TOTAL = 22 # 用户总数量 EXCLUDE_FILES = ["sleep.csv"] # 不需要合并的CSV文件名 # 多表关联共同键,即所有特征表共有的字段,比如日期字段date,没有的话后续可替换为按行拼接 COMMON_KEY = "date" # 自动获取所有需要合并的特征文件名 sample_user_dir = os.path.join(ROOT_DIR, "user_1") feature_files = [f for f in os.listdir(sample_user_dir) if f.endswith(".csv") and f not in EXCLUDE_FILES] all_user_data = [] # 遍历所有用户 for user_id in range(1, USER_TOTAL + 1): user_folder = os.path.join(ROOT_DIR, f"user_{user_id}") user_feature_dfs = [] # 读取当前用户的所有特征CSV for feat_file in feature_files: # 适配你提到的`user_i.sleep.csv`命名规则 file_path = os.path.join(user_folder, f"{user_id}.{feat_file}") df = pd.read_csv(file_path) user_feature_dfs.append(df) # 合并当前用户的所有特征表 merged_user_df = user_feature_dfs[0] for df in user_feature_dfs[1:]: merged_user_df = merged_user_df.merge(df, on=COMMON_KEY, how="outer") # 新增用户标识列 merged_user_df["user_id"] = user_id all_user_data.append(merged_user_df) # 合并所有用户数据并导出 final_df = pd.concat(all_user_data, ignore_index=True) final_df.to_csv("merged_full_dataset.csv", index=False, encoding="utf-8-sig")
适配调整说明
- 如果你的各特征表没有共同的关联字段,可以把合并单用户特征的
merge逻辑替换为merged_user_df = pd.concat(user_feature_dfs, axis=1),直接按行序号拼接 - 若需要保留
sleep.csv,直接将EXCLUDE_FILES设置为空列表[]即可 - 用
os.path.join拼接路径可自动适配Windows、Mac、Linux等不同系统的路径格式,不会出现斜杠方向错误
内容的提问来源于stack exchange,提问作者DYLAN NICO AMBROSI
相关产品推荐
相关产品推荐

