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

如何用Python从200万+行CSV文件中按条件提取指定列数据?

处理大体积CSV文件:按条件筛选并提取指定列

针对200万+行的CSV文件,这里提供两种高效的Python处理方案,适配不同内存场景:

方案一:用内置csv模块(低内存占用,适合超大文件)

该方法逐行读取处理,不会把整个文件加载到内存,内存紧张时优先选这个。

import csv

# 替换成你的输入输出文件路径
input_file = "source_data.csv"
output_file = "filtered_result.csv"

# 需要保留的目标列
target_cols = ["ACC", "NUM", "NAM", "ODBIC"]

with open(input_file, "r", encoding="utf-8") as infile, open(output_file, "w", newline="", encoding="utf-8") as outfile:
    # 用字典形式读取每行,直接通过列名访问数据
    reader = csv.DictReader(infile)
    writer = csv.DictWriter(outfile, fieldnames=target_cols)
    
    # 写入结果表头
    writer.writeheader()
    
    for row in reader:
        # 执行筛选逻辑:ODBIC为YES,且NAM是1或2(CSV读出来是字符串,按需转成整数)
        if row["ODBIC"] == "YES" and row["NAM"] in ("1", "2"):
            # 只写入目标列的数据
            writer.writerow({col: row[col] for col in target_cols})

注意:如果你的NAM列实际存储的是整数类型,可把判断逻辑改成int(row["NAM"]) in (1, 2)。

方案二:用pandas库(代码简洁,内存充足时更高效)

现代电脑内存一般能轻松容纳200万行CSV数据,用pandas写代码更简洁高效。

先安装pandas(如果没装的话):

pip install pandas

处理代码:

import pandas as pd

# 只加载需要的列,减少内存消耗
df = pd.read_csv("source_data.csv", usecols=["ACC", "NUM", "NAM", "ODBIC"])

# 应用筛选条件:ODBIC=YES,且NAM是1/2
filtered_df = df[(df["ODBIC"] == "YES") & (df["NAM"].isin([1, 2]))]

# 保存结果,不写入pandas自带的索引列
filtered_df.to_csv("filtered_result.csv", index=False)

注意:如果NAM列是字符串格式,把isin([1,2])改成isin(["1","2"])即可。

用你提供的示例数据测试,两种方案都会输出你预期的结果。

内容的提问来源于stack exchange,提问作者R. John

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 21:57:41