如何在Pandas DataFrame中将多列列表展开为多行?
Pandas多列表列同步展开实现方法
问题场景
现有一个包含三列的Pandas DataFrame:
- Col 0:句子行号
- Col 1:以列表格式存储的句子分词
- Col 2:对应分词的标注列表
原始数据如下:
| Col 0 | Col1 | Col2 |
|---|---|---|
| 1 | [This, is, sentence] | [l1, l2, l3] |
| 2 | [This, is, sentence, too] | [l1, l2, l3, l4] |
需要将Col1和Col2中的列表同步展开,使每个分词与对应标注单独成一行,目标格式:
| Col 0 | Col1 | Col2 |
|---|---|---|
| 1 | This | l1 |
| 1 | is | l2 |
| 1 | sentence | l3 |
| 2 | This | l1 |
| 2 | is | l2 |
| 2 | sentence | l3 |
| 2 | too | l4 |
错误尝试分析
- 单独对单列调用
explode:仅展开目标列,但另一列仍为列表,无法实现行对应匹配 - 错误的多列
explode写法:传入多个独立参数而非列名列表,且赋值方式不符合Pandas操作逻辑
正确实现代码
确保你的Pandas版本≥1.3.0(该版本开始支持多列同步explode),直接对整个DataFrame调用explode并传入需要展开的列名列表:
# 假设原DataFrame名为data data_exploded = data.explode(['Col1', 'Col2'], ignore_index=True)
代码说明
explode(['Col1', 'Col2']):指定同时展开Col1和Col2两列,Pandas会自动同步对应位置的元素,保证每行的分词与标注一一对应ignore_index=True:可选参数,展开后重置索引,避免原索引重复
执行后得到的结果即符合目标格式。
内容的提问来源于stack exchange,提问作者Yana
相关产品推荐
相关产品推荐

