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

如何将DataFrame指定列转换为按逗号拆分的二维数组

解决方案

不需要使用df.iterrows()逐行遍历,该方法运行效率极低,直接使用pandas内置的向量化字符串处理方法即可,代码更简洁、性能更好。

实现代码

核心是通过.str.split(',')批量对每一行的产品字符串按逗号拆分,拆分后每行自动生成对应的产品列表,再转为numpy数组即可得到你需要的结构:

import numpy as np

# 基础实现
prodarr = Order_Details['Product'].str.split(',').to_numpy()

# 如果数据中存在空值,可先填充空字符串避免拆分报错,推荐使用该写法
prodarr = Order_Details['Product'].fillna('').str.split(',').to_numpy()

# 如果需要严格的标准ndarray结构,可先转列表再生成数组
prodarr = np.array(Order_Details['Product'].fillna('').str.split(',').tolist(), dtype=object)

效果说明

执行后输出的数组结构完全匹配预期:

  • 原单元格为单个产品(如PRODUCT_75),对应行输出为['PRODUCT_75']
  • 原单元格为逗号分隔的多个产品(如PRODUCT_34,PRODUCT_86,PRODUCT_57,PRODUCT_89),对应行输出为['PRODUCT_34', 'PRODUCT_86', 'PRODUCT_57', 'PRODUCT_89']

为什么不推荐iterrows

  • iterrows是逐行循环的原生Python实现,没有做性能优化,当数据集行数达到万级以上时,耗时会是向量化字符串操作的数十到数百倍
  • .str.split是pandas专门优化过的整列批量处理接口,不需要手动写循环逻辑,代码可读性更高

注意:由于每行包含的产品数量不一致,最终生成的numpy数组为object类型,无法转换为固定维度的数值型数组,符合二维不规则数组的使用需求。

内容的提问来源于stack exchange,提问作者Armaan Kumar Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:48:19