Changing a string column into several boolean columns using pandas
Become part of the top 3% of the developers by applying to Toptal https://topt.al/25cXVn
--
Music by Eric Matyas
https://www.soundimage.org
Track title: Hypnotic Puzzle2
--
Chapters
00:00 Question
00:39 Accepted answer (Score 5)
01:17 Answer 2 (Score 4)
01:37 Answer 3 (Score 4)
01:56 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
--
Music by Eric Matyas
https://www.soundimage.org
Track title: Hypnotic Puzzle2
--
Chapters
00:00 Question
00:39 Accepted answer (Score 5)
01:17 Answer 2 (Score 4)
01:37 Answer 3 (Score 4)
01:56 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