Raghavan vmvs
Raghavan vmvs

Reputation: 1265

split rows in pandas dataframe based on spaces in cell entries

I have created the following dataframe in python using pandas

import numpy as np
import pandas as pd

WE create a list

 A=["THIS IS A NEW WORLD   WE NEED A NEW PARADIGM: FOR THE NATION FOR THE PEOPLE",
 "THIS IS A NEW WORLD ORDER;.  WE NEED A NEW PARADIGM-: FOR THE NATION FOR THE PEOPLE%",
  "THIS IS A NEW WORLD?  WE NEED A NEW PARADIGM  FOR THE NATION FOR THE PEOPLE PRESENT."] 

Next we create a dataframe

df1=pd.DataFrame()
df1["A"]=A
df1["B"]=["A1", "A2", "A3"]

The dataframe appears as follows

           A                                                                                B
 0  THIS IS A NEW WORLD   WE NEED A NEW PARADIGM: FOR THE NATION FOR THE PEOPLE             A1
 1  THIS IS A NEW WORLD ORDER;.  WE NEED A NEW PARADIGM-: FOR THE NATION FOR THE PEOPLE%    A2
 2  THIS IS A NEW WORLD?  WE NEED A NEW PARADIGM  FOR THE NATION FOR THE PEOPLE PRESENT.    A3

In the above dataframe the column A has character vectors separatde by a space How do I transform the dataframe to yield the following dataframe

                    A                        B
0   THIS IS A NEW WORLD                     A1
1   WE NEED A NEW PARADIGM:                 A1
2   FOR THE NATION FOR THE PEOPLE           A1
3   THIS IS A NEW WORLD ORDER;.             A2
4   WE NEED A NEW PARADIGM-:                A2
5   FOR THE NATION FOR THE PEOPLE%          A2
6   THIS IS A NEW WORLD?                    A3
7   WE NEED A NEW PARADIGM                  A3
8   FOR THE NATION FOR THE PEOPLE PRESENT.  A3

I request someone to take a look

Upvotes: 1

Views: 465

Answers (1)

jezrael
jezrael

Reputation: 862731

If need split by 2 or more spaces add regex \s{2,} to Series.str.split and then use DataFrame.explode:

df1['A'] = df1['A'].str.split('\s{2,}')
df = df1.explode('A')
print (df)
                                                   A   B
0                                THIS IS A NEW WORLD  A1
0  WE NEED A NEW PARADIGM: FOR THE NATION FOR THE...  A1
1                        THIS IS A NEW WORLD ORDER;.  A2
1  WE NEED A NEW PARADIGM-: FOR THE NATION FOR TH...  A2
2                               THIS IS A NEW WORLD?  A3
2                             WE NEED A NEW PARADIGM  A3
2             FOR THE NATION FOR THE PEOPLE PRESENT.  A3

Upvotes: 2

Related Questions