Input.
Name | Phrase number | Words said |
---|---|---|
John | Phrase 1 | Hi! |
John | Phrase 2 | How are you? |
John | Phrase 3 | Is everything okay? |
Brad | Phrase 1 | Hello! |
Brad | Phrase 2 | I am good! |
Brad | Phrase 3 | How are you? |
Desired output.
Name | Phrase 1 | Phrase 2 | Phrase 3 |
---|---|---|---|
John | Hi! | How are you? | Is everything okay? |
Brad | Hello! | I am good! | How are you? |
How would you solve this with Pandas?
CodePudding user response:
you can use pivot
but have to use a few other methods to clean up the index and columns names (in order to exactly match the desired output):
df = (df.pivot(index='Name', columns='Phrase number')
.droplevel(0, axis=1)
.reset_index()
.rename_axis('', axis=1))
df
Out[1]:
Name Phrase 1 Phrase 2 Phrase 3
0 Brad Hello! I am good! How are you?
1 John Hi! How are you? Is everything okay?