首页 > 解决方案 > 使用两个逗号分隔的列分解 pandas 数据框

问题描述

我有一个数据,它在行中打包了很多值,但我想必须转换为行数据以使其可用。下面是我的输入的样子。我想分解这个数据集。如果它用于单列,我可以做到,但我无法为两列的组合获得相同的结果。使用熊猫可以实现以下目标吗?

import pandas as pd
data = [{'col1':'val1','col2':'val2','col3':'aaa,bbb,ccc','col4':'ddd,eee,fff'}]
df = pd.DataFrame(data)

输入

col1  col2         col3         col4
val1  val2  aaa,bbb,ccc  ddd,eee,fff

期望的输出

col1  col2         col3         col4
val1  val2         aaa          ddd
val1  val2         aaa          eee
val1  val2         aaa          fff
val1  val2         bbb          ddd
val1  val2         bbb          eee
val1  val2         bbb          fff
val1  val2         ccc          ddd
val1  val2         ccc          eee
val1  val2         ccc          fff

标签: pythonpandas

解决方案


你可以爆炸两次:

(df.assign(col3=df.col3.str.split(','),
           col4=df.col4.str.split(','))
   .explode('col3')
   .explode('col4')
).reset_index(drop=True)

输出:

    col1    col2    col3    col4
0   val1    val2    aaa     ddd
1   val1    val2    aaa     eee
2   val1    val2    aaa     fff
3   val1    val2    bbb     ddd
4   val1    val2    bbb     eee
5   val1    val2    bbb     fff
6   val1    val2    ccc     ddd
7   val1    val2    ccc     eee
8   val1    val2    ccc     fff

推荐阅读