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

pandas使用df.explode()无法拆分列值,如何同时展开多列?

错误原因说明

  • 错误尝试1报错原因:你当前second列的元素类型本身就是列表,并非逗号分隔的字符串,.str是pandas提供的字符串列专属访问器,用在非字符串类型的列上就会触发AttributeError,你当前的数据集已经满足explode的输入要求,不需要额外做split操作。
  • 错误尝试2报错原因:list("firstsecond")会将拼接后的字符串逐字符拆分,生成['f','i','r','s','t','s','e','c','o','n','d']这种单字符列表,pandas找不到对应列名自然触发ValueError。你需要传入的是存储列名的列表['first', 'second'],而非拼接字符串。

正确实现方法

pandas 1.3.0及以上版本原生支持同时对多列执行explode操作,直接传入列名列表即可:

import pandas as pd

# 原始数据构造代码
cols = ['name','first', 'second']
data = {'name':['image1','image2'],
        'first':[['cv', 'pork'], ['pork', 'cv']],
        'second':[[34,56],[67,89]]}
df=pd.DataFrame(data)

# 正确展开代码
df = df.explode(['first', 'second'])

执行后得到的输出结果如下:

namefirstsecond
0image1cv34
0image1pork56
1image2pork67
1image2cv89

如果使用的是不支持多列explode的旧版本pandas,可以链式调用两次explode实现相同效果:

df = df.explode('first').explode('second')

注意:该操作要求first和second列每行对应的列表长度完全一致,否则会出现数据错位或者报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:18:04