Changing a string column into several boolean columns using pandas
--------------------------------------------------
Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzle Game 2
--
Chapters
00:00 Changing A String Column Into Several Boolean Columns Using Pandas
00:30 Answer 1 Score 4
00:46 Accepted Answer Score 5
01:16 Answer 3 Score 4
01:31 Thank you
--
Full question
https://stackoverflow.com/questions/5514...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #pandas
#avk47
    Hire the world's top talent on demand or became one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Puzzle Game 2
--
Chapters
00:00 Changing A String Column Into Several Boolean Columns Using Pandas
00:30 Answer 1 Score 4
00:46 Accepted Answer Score 5
01:16 Answer 3 Score 4
01:31 Thank you
--
Full question
https://stackoverflow.com/questions/5514...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#python #pandas
#avk47
ACCEPTED ANSWER
Score 5
I think this should be a good use case for get_dummies:
df.set_index('Name')['Fruit'].str.get_dummies().astype(bool).reset_index()
     Name  Apple  Banana  Citrus
0    Alex   True   False   False
1     Bob  False    True   False
2   Clark  False   False    True
3   Diana  False    True   False
4   Elisa   True   False   False
5   Frida  False   False    True
6  George  False   False    True
7   Hanna  False    True   False
In similar vein, we have,
pd.concat([df['Name'], df['Fruit'].str.get_dummies().astype(bool)], axis=1)
     Name  Apple  Banana  Citrus
0    Alex   True   False   False
1     Bob  False    True   False
2   Clark  False   False    True
3   Diana  False    True   False
4   Elisa   True   False   False
5   Frida  False   False    True
6  George  False   False    True
7   Hanna  False    True   False
ANSWER 2
Score 4
You can use the below:
df[['Name']].join(pd.get_dummies(df.Fruit).astype(bool))
     Name  Apple  Banana  Citrus
0    Alex   True   False   False
1     Bob  False    True   False
2   Clark  False   False    True
3   Diana  False    True   False
4   Elisa   True   False   False
5   Frida  False   False    True
6  George  False   False    True
7   Hanna  False    True   False
ANSWER 3
Score 4
Seems like crosstab is fine
pd.crosstab(df.Name,df.Fruit).astype(bool).reset_index()
Out[90]: 
Fruit    Name  Apple  Banana  Citrus
0        Alex   True   False   False
1         Bob  False    True   False
2       Clark  False   False    True
3       Diana  False    True   False
4       Elisa   True   False   False
5       Frida  False   False    True
6      George  False   False    True
7       Hanna  False    True   False