将pandas中不均匀的数据帧从锯齿状宽改为高

将pandas中不均匀的数据帧从锯齿状宽改为高,pandas,reshape,Pandas,Reshape,我有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'

我有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'),但它不起作用

有什么建议吗?

您可以使用转换为列表,然后您可以使用:


熊猫您可以使用转换为列表,然后您可以使用:



关于如何转换为列表,我思考了很久。谢谢我一直在思考如何转换为列表。谢谢
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
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