Reputation: 373
My dataframe is as follows:
In [16]: df
Out[16]:
name dep
0 jai sales
1 bobby design
2 ram dev
3 shyam dev design
My intention is to remake the dataframe as follows
In [16]: new_df
Out[16]:
name dev design sales
0 jai 0 1 0
1 bobby 0 1 0
2 ram 1 1 0
I tried the following
new_df["dev"] = df[df["dep"].str.contains('dev')]
new_df["design"] = df[df["dep"].str.contains('design')]
But this gives me the whole dataframe. How do I get a boolean result?
Note: pd.get_dummies does not give me such a result
Upvotes: 0
Views: 29
Reputation: 13255
Use pd.get_dummies
as:
df[['female','male']] = pd.get_dummies(df.gender)
del df['gender']
print(df)
name female male
0 jai 0 1
1 bobby 1 0
2 ram 0 1
print(pd.get_dummies(df.gender))
female male
0 0 1
1 1 0
2 0 1
EDIT : If you have multiple strings in a value then use:
df = df.join(df.dep.str.get_dummies(sep=' '))
del df['dep']
print(df)
design dev sales
0 0 0 1
1 1 0 0
2 0 1 0
3 1 1 0
print(df.dep.str.get_dummies(sep=' '))
design dev sales
0 0 0 1
1 1 0 0
2 0 1 0
3 1 1 0
Upvotes: 1