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

如何在Pandas中对DataFrame多列执行Explode拆分操作?

在Pandas中对多列执行explode操作并保留原始列

首先明确输入的DataFrame结构:

import pandas as pd

df = pd.DataFrame({
    'SRCA': ['A,B', 'E,C,D'],
    'SRCB': ['G,H', 'Z,Y,K'],
    'SRC_CNTA': [1, 2],
    'SRC_CNTB': [1, 2]
})

输入数据展示:

SRCA    SRCB  SRC_CNTA  SRC_CNTB
0    A,B     G,H         1         1
1  E,C,D  Z,Y,K         2         2

你当前使用的代码会直接替换SRCA和SRCB列的值,无法保留原始的逗号分隔列。要得到包含原始列+拆分后列的预期输出,可按以下方式实现:

推荐方案(Pandas 1.3.0+)

  1. 先将需要拆分的列通过str.split(',')转换为列表格式,创建新的拆分列;
  2. 使用explode同时对多个新列执行拆分操作,保留所有原始列。

代码实现:

# 生成拆分后的列表列
df['SRCA_EXP'] = df['SRCA'].str.split(',')
df['SRCB_EXP'] = df['SRCB'].str.split(',')

# 对多列执行explode并重置索引
result = df.explode(['SRCA_EXP', 'SRCB_EXP'], ignore_index=True)

执行后得到的结果:

SRCA    SRCB  SRC_CNTA  SRC_CNTB SRCA_EXP SRCB_EXP
0    A,B     G,H         1         1        A        G
1    A,B     G,H         1         1        B        H
2  E,C,D  Z,Y,K         2         2        E        Z
3  E,C,D  Z,Y,K         2         2        C        Y
4  E,C,D  Z,Y,K         2         2        D        K

低版本Pandas兼容方案(低于1.3.0)

如果你的Pandas版本不支持多列同时explode,可以通过设置索引保留原始列后再执行拆分:

# 先生成分拆列
df['SRCA_EXP'] = df['SRCA'].str.split(',')
df['SRCB_EXP'] = df['SRCB'].str.split(',')

# 设置原始列为索引,拆分后恢复索引
result = df.set_index(['SRCA', 'SRCB', 'SRC_CNTA', 'SRC_CNTB'])\
           .apply(pd.Series.explode)\
           .reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:10:58