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

如何将Pandas DataFrame中含列表的行拆分为单个元素行?

解决Pandas DataFrame列表列展开后仍为单元素列表的问题

针对你遇到的df.explode('col2')后col2仍为单元素列表的情况,可按以下步骤处理:

1. 先确认col2列的元素类型

首先检查col2的元素是否为嵌套列表(比如原数据中col2实际结构是[[0],[1],[2]]而非[0,1,2]),或是字符串形式的列表(比如"[0,1,2]")。

执行以下代码查看元素类型:

print(df['col2'].apply(type).unique())

2. 对应解决方案

方案一:如果是嵌套列表(元素为单元素列表)

连续使用两次explode即可彻底展开:

df = df.explode('col2').explode('col2')

方案二:如果是字符串形式的列表

先将字符串转换为真正的Python列表,再执行explode:

import ast
# 把字符串格式的列表转为可迭代的Python列表
df['col2'] = df['col2'].apply(ast.literal_eval)
# 展开列表元素为单独行
df = df.explode('col2')

方案三:通用展开方法(适配所有可迭代元素)

如果上述方法无效,可使用apply+stack的方式强制展开:

df = df.set_index('col1')['col2'].apply(pd.Series).stack().reset_index(name='col2').drop('level_1', axis=1)

示例验证

以你的原数据结构为例,假设原DataFrame为:

import pandas as pd
df = pd.DataFrame({
    'col1': [0,1,1],
    'col2': [[[0],[1],[2],[3],[4]], [[0]], [[1],[2]]]
})

执行方案一代码后,即可得到你期望的结果:

col1  col2
0     0     0
0     0     1
0     0     2
0     0     3
0     0     4
1     1     0
2     1     1
2     1     2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 02:25:14