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

如何将多个结构一致的CSV文件合并为单个按name列排序的CSV文件

多CSV合并重排实现方案

方案1:Python 实现(全平台兼容)

将所有待合并的CSV文件放在同一个目录下,无需修改文件名,执行以下代码即可输出符合预期的合并结果。

import os
import csv

# 待合并CSV存放的文件夹路径,可根据实际情况修改
csv_dir = "./csv_files"
all_values = []

# 遍历读取所有CSV的value列
for filename in os.listdir(csv_dir):
    if not filename.endswith(".csv"):
        continue
    file_path = os.path.join(csv_dir, filename)
    with open(file_path, "r", encoding="utf-8") as f:
        reader = csv.reader(f, delimiter=" ", skipinitialspace=True)
        next(reader)  # 跳过表头
        for row in reader:
            if row:  # 跳过空行
                all_values.append(row[1])

# 写入合并后的CSV
output_path = "./merged.csv"
with open(output_path, "w", encoding="utf-8", newline="") as f:
    writer = csv.writer(f, delimiter="\t")
    writer.writerow(["name", "value"])
    for idx, value in enumerate(all_values, start=1):
        writer.writerow([f"n{idx}", value])

如果你确实需要按原文件中name列的数值排序(即所有文件的n1排在最前,其次是所有n2,以此类推),可以修改读取逻辑为:

all_rows = []
for filename in os.listdir(csv_dir):
    if not filename.endswith(".csv"):
        continue
    file_path = os.path.join(csv_dir, filename)
    with open(file_path, "r", encoding="utf-8") as f:
        reader = csv.reader(f, delimiter=" ", skipinitialspace=True)
        next(reader)
        for row in reader:
            if row:
                name_num = int(row[0].strip("n"))
                all_rows.append((name_num, row[1]))
# 按原name的数值排序
all_rows.sort(key=lambda x: x[0])

注意:如果你的CSV是逗号分隔,只需要把上述代码里的分隔符参数改成逗号即可。

方案2:Shell 命令实现(适用于Linux/macOS)

一行命令即可完成符合预期结果的合并:

# 合并所有csv,跳过表头,重新生成连续name列
awk 'FNR>1 {print $2}' *.csv | awk 'BEGIN{print "name\tvalue"} {print "n"NR"\t"$1}' > merged.csv

如果需要按原name列的数值排序,使用以下命令:

awk 'FNR>1 {print substr($1,2) "\t" $2}' *.csv | sort -n | awk 'BEGIN{print "name\tvalue"} {print "n"$1"\t"$2}' > merged.csv

内容的提问来源于stack exchange,提问作者Xianghui Huang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:30:01