Home > Blockchain >  Convert the lists in multiple columns to rows in pandas df
Convert the lists in multiple columns to rows in pandas df

Time:10-07

I have df with three columns:

  • Col 0 - sentence row num
  • Col 1 - Sentence converted to list
  • Col 2 - list of annotations
Col 0 Col1 Col2
1 [This, is, sentence] [l1, l2, l3]
2 [This, is, sentence, too] [l1, l2, l3, l4]

I would like to convert Col1 and Col2 and move each row and its respective annotation to separate row:

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

When I use explode on each column separately one of the columns always does not change.

data2['Col1_exploded'] = (data['Col1'].explode('Col1')) 

And this option does not work too:

data2[['Col1_exploded', 'Col2_exploded']] = (data[['Col1', 'Col2']].explode('Col1', 'Col2'))

CodePudding user response:

You can pass list of column names to explode:

>>> df.explode(['Col1', 'Col2'])

   Col 0      Col1 Col2
0      1      This   l1
0      1        is   l2
0      1  sentence   l3
1      2      This   l1
1      2        is   l2
1      2  sentence   l3
1      2       too   l4

CodePudding user response:

you were really close ! this works for me :

df.explode(['Col1', 'Col2'])

result :

    Col 0   Col1    Col2
0   1   This    l1
0   1   is  l2
0   1   sentence    l3
1   2   This    l1
1   2   is  l2
1   2   sentence    l3
1   2   too l4
  • Related