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
