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

合并不同结构CSV文件的最佳工具及结构差异查看方案

解决方案

工具选择

根据你的文件规模和使用习惯,分两类场景选工具即可:

  • 无代码场景:
    • 列差异对比:直接用VS Code安装Rainbow CSV插件,打开CSV文件后可以直接查看完整列名列表,两个文件的列名做个简单差集就能定位差异,大文件也不会卡顿;如果习惯命令行操作,用csvkit工具包,执行csvcut -n 你的文件.csv就能直接打印所有列的序号和名称,和另一个文件的输出做diff就能快速找出缺失列。
    • 批量补列/合并:用Excel/Power BI自带的Power Query,导入文件夹下所有CSV文件时,功能会自动识别所有文件的全量列,缺失列自动补空值,不需要手动配置列映射,处理完成直接导出统一结构的CSV即可。
  • 轻量脚本场景:pandas完全能满足需求,你根本不需要手动枚举所有列,你之前测试的pd.concat本身就自带列自动对齐逻辑——你示例代码里没有手动指定column2、column3,合并后自动补全了NaN值就是这个特性在生效。

可直接复用的pandas脚本

下面的脚本不需要手动写任何列名,自动遍历目标文件夹下的所有CSV,自动识别全量列,支持两种输出模式:直接合并为单个大文件,或者给每个原文件补全缺失列后单独保存。如果是几十G级别的大文件,只读表头做列对比、分块读取即可,不会出现内存溢出问题。

import pandas as pd
import os

# 替换为你存放CSV文件的本地文件夹路径
CSV_FOLDER = "./csv_files"
all_dfs = []

# 遍历读取所有CSV文件
for file_name in os.listdir(CSV_FOLDER):
    if file_name.lower().endswith(".csv"):
        file_path = os.path.join(CSV_FOLDER, file_name)
        # 大文件读取可以加chunksize参数分块加载,避免占满内存
        df = pd.read_csv(file_path, low_memory=False)
        all_dfs.append(df)

# 自动对齐所有列,缺失值自动填充NaN
merged_data = pd.concat(all_dfs, ignore_index=True)
full_columns = merged_data.columns.tolist()

# --- 输出模式二选一 ---
# 模式1:直接导出为合并后的单个大文件,适合直接导入QuickSight
merged_data.to_csv("./merged_result.csv", index=False)

# 模式2:给每个原文件补全缺失列后单独保存
# for index, df in enumerate(all_dfs):
#     fixed_df = df.reindex(columns=full_columns)
#     fixed_df.to_csv(f"./fixed_csv_{index}.csv", index=False)

如果只需要对比两个CSV的列差异,不需要加载全量数据,只读表头就能秒出结果:

# 只读取表头,不加载实际数据,大文件也能瞬间完成
df1_cols = set(pd.read_csv("file1.csv", nrows=0).columns)
df2_cols = set(pd.read_csv("file2.csv", nrows=0).columns)

print(f"文件1独有列:{df1_cols - df2_cols}")
print(f"文件2独有列:{df2_cols - df1_cols}")
print(f"全量列集合:{df1_cols | df2_cols}")

QuickSight适配提示

如果你的CSV是存放在AWS S3上的,不需要本地合并处理后再上传:只要保证所有CSV的列名一致(列顺序不影响),在QuickSight里直接配置S3路径前缀为数据源,服务会自动扫描路径下所有CSV文件做合并,省掉本地处理大文件的步骤。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:36:47