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

如何将Pandas数据集的多列逗号分隔值拆分为逐行记录

Pandas拆分多列逗号分隔值并展开成行

原始数据集

ordercontainerbox
ac1,c2,c3b1,b2,b3
bc4,c5,c6b4,b5,b6

需求

生成包含order和content两列的表格,content列需包含container和box列的所有值,每个值单独占一行,期望结果如下:

ordercontent
ac1
ac2
ac3
ab1
ab2
ab3
bc4
bc5
bc6
bb4
bb5
bb6

解决方案

方法一:先合并列再拆分展开

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'order': ['a', 'b'],
    'container': ['c1,c2,c3', 'c4,c5,c6'],
    'box': ['b1,b2,b3', 'b4,b5,b6']
})

# 合并container和box列,用逗号分隔
df['content'] = df['container'].str.cat(df['box'], sep=',')
# 拆分content为列表并展开成行,保留需要的列
result = df.assign(content=df['content'].str.split(',')).explode('content')[['order', 'content']]

print(result)

方法二:分别拆分两列再合并结果

import pandas as pd

# 构造示例数据
df = pd.DataFrame({
    'order': ['a', 'b'],
    'container': ['c1,c2,c3', 'c4,c5,c6'],
    'box': ['b1,b2,b3', 'b4,b5,b6']
})

# 拆分container列并展开
container_df = df.assign(content=df['container'].str.split(',')).explode('content')[['order', 'content']]
# 拆分box列并展开
box_df = df.assign(content=df['box'].str.split(',')).explode('content')[['order', 'content']]
# 合并两个结果,按order排序
result = pd.concat([container_df, box_df]).sort_values('order').reset_index(drop=True)

print(result)

两种方法都能得到预期结果,explode()是Pandas中专门用于将列表类型单元格拆分为多行的工具,适配这类场景非常高效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:46:08