Skip to content
Advertisement

Convert the lists in multiple columns to rows in pandas df

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'))

Advertisement

Answer

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
User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement