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

如何在Power Query中从.csv文件导入选定列并动态追加合并数据

动态合并多CSV文件并保留固定列实现方案

核心逻辑

方案完全适配后续CSV文件新增冗余字段、列顺序调整的场景,只要你需要保留的固定列名不发生变更,就可以稳定运行,不需要调整代码/配置:

  • 遍历目标路径下所有.csv格式文件
  • 读取单个文件时先识别表头,仅提取预先指定的目标列,自动忽略所有无关字段
  • 将所有文件提取出的目标列数据逐行追加,最终合并为单张表
  • 增加基础校验:如果单个文件缺失必填列,直接输出文件名和缺失列名提示,避免脏数据混入

方案1:Python + Pandas 实现(适合批量处理/自动化调度场景)

适配性最强,不受文件数量、文件大小限制,读取阶段就过滤冗余列,内存占用低。
首先安装依赖:
pip install pandas
使用时仅需要修改代码开头的3个配置项即可:存放CSV的文件夹路径、需要保留的列名列表、合并后文件的输出路径。

import os
import pandas as pd

# -------------------------- 自定义配置项 --------------------------
CSV_FOLDER = "./csv_files"  # 替换为存放所有待合并CSV的文件夹路径
TARGET_COLUMNS = ["NAME", "ADDRESS", "EMAIL"]  # 固定保留的列名,需和CSV内列名拼写/大小写一致
OUTPUT_PATH = "./merged_result.csv"  # 合并结果的保存路径
# -----------------------------------------------------------------

def merge_csv():
    df_list = []
    for fname in os.listdir(CSV_FOLDER):
        if not fname.lower().endswith(".csv"):
            continue
        fpath = os.path.join(CSV_FOLDER, fname)
        try:
            # 读取时仅加载目标列,自动跳过所有无关字段
            df = pd.read_csv(fpath, usecols=lambda c: c in TARGET_COLUMNS)
            # 校验当前文件是否缺失必要列
            miss_cols = [c for c in TARGET_COLUMNS if c not in df.columns]
            if miss_cols:
                print(f"[警告] 文件 {fname} 缺失列:{','.join(miss_cols)},已跳过")
                continue
            df_list.append(df)
            print(f"已处理:{fname},行数:{len(df)}")
        except Exception as e:
            print(f"[错误] 处理 {fname} 失败:{str(e)}")
            continue
    if not df_list:
        print("未读取到有效数据,请检查路径和列名配置")
        return
    # 追加合并所有数据
    final_df = pd.concat(df_list, ignore_index=True)
    final_df.to_csv(OUTPUT_PATH, index=False, encoding="utf-8-sig")
    print(f"合并完成,总行数:{len(final_df)},结果已保存至 {OUTPUT_PATH}")

if __name__ == "__main__":
    merge_csv()

关键说明:核心过滤逻辑依赖列名匹配而非列位置,后续供应商不管新增多少字段、怎么调整列顺序,只要不修改TARGET_COLUMNS里指定的三个列名,代码不需要任何改动即可正常运行。


方案2:Excel Power Query 实现(无代码场景,适合日常办公使用)

不需要写代码,用Excel自带功能即可实现,后续更新数据只需要点刷新:

  • 将所有待合并的CSV文件放入同一个独立文件夹
  • 新建空白Excel,点击顶部菜单栏「数据」>「获取数据」>「自文件」>「自文件夹」,选择存放CSV的文件夹后点击确定
  • 在弹出的文件列表页,直接点击「转换数据」进入Power Query编辑器,不要点默认的合并按钮
  • 点击「内容」列标题旁的双向展开箭头,取消全选,仅勾选NAME、ADDRESS、EMAIL三个需要保留的列,去掉「使用原始列名作为前缀」的勾选,点击确定
  • 此时所有数据已完成合并和列过滤,后续如果文件夹内新增CSV、或者原有CSV新增了无关字段,只需要点击「数据」选项卡下的「刷新」按钮,结果会自动更新,不需要重复配置
  • 点击「关闭并上载」,即可将合并结果导出到Excel工作表

避坑提示

  • 不要使用按列位置读取的逻辑(比如固定读取第1、2、3列),一旦供应商在文件中插入新列、调整列顺序,会直接导致数据错位
  • 如果不同文件的目标列名存在大小写不一致、前后有空格的情况,可以在读取时统一把列名转成大写、去除首尾空格后再做匹配,避免漏列
  • 遇到CSV中文乱码的问题,在pd.read_csv中添加encoding参数指定对应编码即可,国内常用的编码为gbk、utf-8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 18:09:20