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

如何基于列值生成新DataFrame,移除原表已用行并分别导出CSV?

按Product_id拆分DataFrame并保存的最优实现方法

需求说明

现有包含Product_id列的DataFrame(Df_original),需要完成以下操作:

  • 按指定的Product_id值拆分出多个子DataFrame,分别保存为独立CSV文件
  • 将原DataFrame中未被拆分的剩余行,单独保存为另一个CSV文件

原DataFrame数据:

Id value Product_id
0    1   123         7
1    2   514         9
2    3   234         1
3    4   912         9
4    5   325         1
5    6   301         7
6    7   325         1
7    8   301         9

最优实现代码

import pandas as pd

# 加载原DataFrame(替换为你的实际数据加载逻辑)
# Df_original = pd.read_csv("your_source_file.csv")

# 定义需要拆分的目标Product_id列表
target_product_ids = [7, 9]

# 初始化布尔掩码,标记需保留的行(初始全为True)
remaining_rows_mask = pd.Series([True] * len(Df_original), index=Df_original.index)

# 遍历目标ID,拆分并保存子DataFrame
for pid in target_product_ids:
    # 筛选对应Product_id的行
    subset_df = Df_original[Df_original['Product_id'] == pid]
    # 保存为CSV文件,文件名按Product_id命名
    subset_df.to_csv(f"Df_new_pd_{pid}.csv", index=False)
    # 更新掩码:将已拆分的行标记为不保留
    remaining_rows_mask &= (Df_original['Product_id'] != pid)

# 筛选剩余行并保存
remaining_df = Df_original[remaining_rows_mask]
remaining_df.to_csv("Df_remaining.csv", index=False)

代码优势

  1. 高效低耗:仅对原DataFrame进行两次全量扫描(拆分目标ID+筛选剩余行),避免重复遍历带来的性能损耗
  2. 灵活扩展:只需修改target_product_ids列表,即可支持任意数量的Product_id拆分需求
  3. 结果精准:通过布尔掩码精准跟踪未拆分行,确保剩余数据无遗漏、无重复

执行后生成的文件内容

  • Df_new_pd_7.csv:
Id,value,Product_id
1,123,7
6,301,7
  • Df_new_pd_9.csv:
Id,value,Product_id
2,514,9
4,912,9
8,301,9
  • Df_remaining.csv:
Id,value,Product_id
3,234,1
5,325,1
7,325,1

内容的提问来源于stack exchange,提问作者Otávio Augusto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:00:02