изменить неровный фрейм данных в пандах от зубчатых широких до высоких - PullRequest
1 голос
/ 08 ноября 2019

У меня есть 5 тыс. Строк, каждая строка имеет до 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'), но это не работает

Есть предложения?

1 Ответ

0 голосов
/ 08 ноября 2019

Вы можете использовать Series.str.split для преобразования в список , тогда вы можете использовать DataFrame.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

панды <0,25: </strong>

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
...