mlengg
mlengg

Reputation: 113

How can i split a pandas dataframe in such a way that for each split value it creates a column

for eg.

Input Data frame

Name     Subjects
Ramesh   Maths,Science
Rakesh   MAths,Science,Social Studies
John     Social Science, Lietrature

Output Data frame

Name     Subject1       Subject2     Subjects3
Ramesh   Maths          Science      NaN
Rakesh   MAths          Science      Social Studies
John     Social Science Literature   Nan

Upvotes: 1

Views: 48

Answers (1)

EdChum
EdChum

Reputation: 394081

You can create a new df from the result of str.split and then concat them:

In [66]:
subjects = df['Subjects'].str.split(',', expand=True)
subjects

Out[66]:
                0           1               2
0           Maths     Science            None
1           MAths     Science  Social Studies
2  Social Science  Lietrature            None

In [71]:    
subjects.columns = ['Subject ' + str(x + 1) for x in range(len(subjects.columns))]
subjects

Out[71]:
        Subject 1   Subject 2       Subject 3
0           Maths     Science            None
1           MAths     Science  Social Studies
2  Social Science  Lietrature            None

In [74]:
concatenated = pd.concat([df,subjects], axis=1)
concatenated.drop('Subjects',axis=1,inplace=True)
concatenated

Out[74]:
     Name       Subject 1   Subject 2       Subject 3
0  Ramesh           Maths     Science            None
1  Rakesh           MAths     Science  Social Studies
2    John  Social Science  Lietrature            None

Upvotes: 2

Related Questions