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

Python中处理百万行表格时按唯一SFN分组聚合的最有效方法是什么

方案评估与优化实现

你当前的字典遍历思路逻辑完全自洽,但纯Python原生for循环处理百万级表格数据时,Python解释器的动态类型检查、函数调用开销会被放大,因此耗时较长,推荐使用更高效的向量化处理方案:

1. 首选pandas方案(工业界通用,学习成本低)

pandas底层用C实现运算逻辑,跳过了Python层的循环开销,100万行数据常规消费级CPU即可在10秒内完成聚合,完全满足你的需求,示例代码如下:

import pandas as pd

# 读取源数据,支持csv/excel/parquet等多种格式
df = pd.read_csv("源数据文件路径.csv")

# 按SFN分组聚合,unique方法默认保留值的首次出现顺序
agg_result = df.groupby("SFN", as_index=False).agg(
    PermitNo = ("PermitNo", lambda col: col.unique().tolist()),
    Elevation = ("Elevation", lambda col: col.unique().tolist()),
    Year = ("Year", lambda col: col.unique().tolist())
    # 其余需要聚合的字段按照上述格式补充即可
)

# 导出聚合结果
agg_result.to_csv("聚合结果.csv", index=False)

2. 更高性能方案(千万级以上数据适用)

如果后续数据量继续上涨,可以用polars库实现更高效率的处理,它是基于Rust开发的列式运算库,同等数据量下比pandas快3~5倍,内存占用也更低:

import polars as pl

df = pl.read_csv("源数据文件路径.csv")
agg_result = df.group_by("SFN").agg(
    pl.col("PermitNo").unique(maintain_order=True),
    pl.col("Elevation").unique(maintain_order=True),
    pl.col("Year").unique(maintain_order=True)
)
agg_result.write_csv("聚合结果.csv")

方案对比说明

纯Python手写循环的方案时间复杂度和上述工具库的方案本质上是一致的,但解释器层面的额外开销会让实际耗时高出20倍以上,在内存充足的情况下,直接使用成熟的结构化数据处理库是性价比最高的选择。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 02:45:03