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

Pandas拆分DataFrame单元格拼接值的常用高效方法有哪些?

解决方案

第一种格式转第二种格式(拆分行)

直接使用Pandas原生的str.split() + explode()组合即可完成,全程向量化操作,完全避免Python层的循环,性能远高于遍历写法,数据量越大优势越明显:

import pandas as pd

packed = pd.DataFrame([['banana', 'long|yellow'], 
                       ['kiwi', 'brown|oval']], 
                      columns=['FRUIT', 'ATTRIBUTES'])
pack_delim = '|'

# 拆分多值列为列表,再把列表展开为多行
unpacked = packed.assign(
    ATTRIBUTE = packed['ATTRIBUTES'].str.split(pack_delim)
).explode('ATTRIBUTE').drop('ATTRIBUTES', axis=1).reset_index(drop=True)

第二种格式转第一种格式(合并行)

反向操作可以用groupby + 聚合拼接实现:

packed = unpacked.groupby('FRUIT', as_index=False).agg(
    ATTRIBUTES = ('ATTRIBUTE', '|'.join)
)

性能说明

你原来的遍历写法在数据量超过1万行时性能下降会非常明显,而上述原生方法的性能是遍历写法的10~100倍,适配生产环境的大数据量处理需求。如果你的Pandas版本低于0.25(无explode方法),可以改用pd.DataFrame(packed['ATTRIBUTES'].str.split(pack_delim).tolist(), index=packed['FRUIT']).stack().reset_index([0, 'FRUIT'])的兼容写法,性能也远优于遍历。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 16:39:00