将 pandas 中的不均匀数据框从锯齿状宽变高

reshape an uneven data frame in pandas from jagged wide to tall

我有5k行,每行最多有10个关联值,例如:

df=pd.DataFrame({'col1':['a','b','c'],'col2':['a1,a2,a3','b1','c1,c2']})

    col1    col2
0   a   a1,a2,a3
1   b   b1
2   c   c1,c2

我想制作一个独特的映射,例如:

pd.DataFrame({'col1':['a','a','a','b','c','c'],'col2':['a1','a2','a3','b1','c1','c2']})
col1    col2
0   a   a1
1   a   a2
2   a   a3
3   b   b1
4   c   c1
5   c   c2

我试过df.explode('col2'),但没用

有什么建议吗?

你可以使用 Series.str.split to convert to list,then you could useDataFrame.explode:

df['col2']=df['col2'].str.split(',')
df=df.explode('col2')
print(df)

  col1 col2
0    a   a1
0    a   a2
0    a   a3
1    b   b1
2    c   c1
2    c   c2

pandas <0.25:

df['col2']=df['col2'].str.split(',')
df=pd.DataFrame({'col1':df.col1.repeat(df.col2.str.len()),'B':np.concatenate(df.col2.values)})
print(df)

  col1   B
0    a  a1
0    a  a2
0    a  a3
1    b  b1
2    c  c1
2    c  c2