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

Pandas如何按id分组高效将DataFrame存储为对应CSV文件

按id列拆分DataFrame导出独立CSV的高效实现

不要用逐id做布尔筛选的纯Python层for循环,用pandas内置的groupby做分组导出是效率最高的方案,分组逻辑走底层C实现,比手动循环快数倍到数十倍,数据量越大优势越明显。

实现代码

首先导入pandas构造匹配示例结构的测试数据:

import pandas as pd

df = pd.DataFrame({
    'id': [1, 1, 2, 3],
    'B': [2, 3, 4, 12],
    'C': [3, 4, 2, 32]
})

核心分组导出逻辑:

# 按id列一次性完成所有分组切分
for group_val, sub_df in df.groupby(by='id', observed=True):
    # 按分组值命名文件,导出去除默认生成的行索引
    sub_df.to_csv(f"{group_val}.csv", index=False)

运行后会直接在当前工作目录生成1.csv、2.csv、3.csv三个文件,每个文件内只存储对应id的所有行数据。

效率优化说明

  • 常规低效for循环的写法一般是先取id列的所有唯一值,再逐次用df[df['id'] == 目标id]做布尔筛选,每次筛选都会触发一次全表扫描,数据量越大重复计算开销越高
  • groupby的分组切分是pandas底层优化过的逻辑,仅需一次遍历就能完成所有子表拆分,没有重复扫描的额外开销
  • 如果你的数据量在百万行级别,可以提前安装pyarrow库,在导出时追加engine='pyarrow'参数,CSV写入速度还能再提升30%以上:
    sub_df.to_csv(f"{group_val}.csv", index=False, engine='pyarrow')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:01:14