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

如何修改Python脚本从CSV中选取指定列生成新CSV文件

首先需要说明:你当前使用的openpyxl库仅支持处理xlsx/xlsm等Excel格式文件,不支持CSV文件操作。如果你实际需要处理的是Excel文件,只是误写了CSV后缀,可直接调整现有代码实现按列名筛选列;如果确实是处理CSV文件,建议用Python自带的csv模块或者pandas库,实现更简单。

方案1:调整openpyxl代码(适配Excel文件按列名筛选)

修改后的代码如下,你只需修改TARGET_COLUMNS配置项为你需要保留的列名即可:

# 导入openpyxl模块
import openpyxl as xl

# -------------------------- 可修改配置项 --------------------------
# 填写需要保留的列名,需和源文件表头完全一致
TARGET_COLUMNS = ["姓名", "年龄", "联系电话"]
# 源Excel文件路径
filename = "C:\\Users\\...\\input.xlsx"
# 输出Excel文件路径
filename1 = "C:\\Users\\...\\output.xlsx"
# ------------------------------------------------------------------

# 读取源文件
wb1 = xl.load_workbook(filename)
ws1 = wb1.worksheets[0]

# 新建目标工作簿
wb2 = xl.Workbook()
ws2 = wb2.active

# 读取表头匹配目标列的索引
header = [cell.value for cell in ws1[1]]
target_col_index = [idx+1 for idx, col in enumerate(header) if col in TARGET_COLUMNS]
max_row = ws1.max_row

# 逐行复制指定列
for row_num in range(1, max_row + 1):
    for new_col_idx, old_col_idx in enumerate(target_col_index, start=1):
        cell_val = ws1.cell(row=row_num, column=old_col_idx).value
        ws2.cell(row=row_num, column=new_col_idx).value = cell_val

# 保存文件
wb2.save(filename1)

方案2:CSV文件处理(csv模块版本,无需额外安装依赖)

import csv

# -------------------------- 可修改配置项 --------------------------
TARGET_COLUMNS = ["姓名", "年龄", "联系电话"]
input_csv_path = "C:\\Users\\...\\input.csv"
output_csv_path = "C:\\Users\\...\\output.csv"
# ------------------------------------------------------------------

with open(input_csv_path, 'r', encoding='utf-8', newline='') as infile, \
     open(output_csv_path, 'w', encoding='utf-8', newline='') as outfile:
    reader = csv.DictReader(infile)
    writer = csv.DictWriter(outfile, fieldnames=TARGET_COLUMNS)
    writer.writeheader()
    for row in reader:
        writer.writerow({col: row[col] for col in TARGET_COLUMNS})

如果你的CSV文件是GBK编码,将上述代码中的encoding='utf-8'改为encoding='gbk'即可。

方案3:CSV文件处理(pandas版本,代码最简洁)

如果可以安装第三方库,用pandas只需3行代码就能实现:

import pandas as pd

TARGET_COLUMNS = ["姓名", "年龄", "联系电话"]
# 读取时直接筛选指定列
df = pd.read_csv("input.csv", usecols=TARGET_COLUMNS)
# 输出到新CSV,不保存索引列
df.to_csv("output.csv", index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 04:15:00