Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pandas get one hot encodings from a column as booleans

I'm considering a Pandas Dataframe. I would like to find an efficient way in which the second Dataframe is created.

import pandas as pd
data = {"column":[0,1,2,0,1,2,0]}   
df = pd.DataFrame(data) 
column
0
1
2
0
1
2
0
column0  column1 column2
true      false     false
false      true     false
false      false     true
true      false     false
false      true     false
false      false     true
true      false     false
like image 269
Stefano Barone Avatar asked Sep 19 '25 09:09

Stefano Barone


1 Answers

This is a get_dummies problem, but you will additionally need to specify dtype=bool to get columns of bools:

pd.get_dummies(df['column'], dtype=bool)                                                                                                  
       0      1      2
0   True  False  False
1  False   True  False
2  False  False   True
3   True  False  False
4  False   True  False
5  False  False   True
6   True  False  False

pd.get_dummies(df['column'], dtype=bool).dtypes                                                                                          
0    bool
1    bool
2    bool
dtype: object

# carbon copy of expected output
dummies = pd.get_dummies(df['column'], dtype=bool)
dummies[:] = np.where(pd.get_dummies(df['column'], dtype=bool), 'true', 'false')  

dummies.add_prefix('column')
  column0 column1 column2
0    true   false   false
1   false    true   false
2   false   false    true
3    true   false   false
4   false    true   false
5   false   false    true
6    true   false   false
like image 169
cs95 Avatar answered Sep 21 '25 00:09

cs95