Reputation: 2477
I have this dataset:
ARTID INFO_1 INFO_2
00001 some_info_11 some_info_21
00002 some_info_12 some_info_22
00003 some_info_13 some_info_23
and I want to transform like this
ARTID some_info_11 some_info_12 some_info_13 some_info_21 some_info_22 some_info_23
00001 1 0 0 1 0 0
00002 0 1 0 0 1 0
but I need to be a sparse matrix. What's the most "memory friendly" way to do this?
Upvotes: 1
Views: 119
Reputation: 75150
Using pd.get_dummies()
and pd.concat()
df1 = pd.concat([df.ARTID,pd.get_dummies(df[['INFO_1','INFO_2']],prefix='',prefix_sep='')],axis=1)
print(df1)
ARTID some_info_11 some_info_12 some_info_13 some_info_21 \
0 00001 1 0 0 1
1 00002 0 1 0 0
2 00003 0 0 1 0
some_info_22 some_info_23
0 0 0
1 1 0
2 0 1
If you ARTID
as an index is allowed , you can use:
pd.get_dummies(df[['INFO_1','INFO_2']],prefix='',prefix_sep='').set_index(df.ARTID)
some_info_11 some_info_12 some_info_13 some_info_21 some_info_22 \
ARTID
00001 1 0 0 1 0
00002 0 1 0 0 1
00003 0 0 1 0 0
some_info_23
ARTID
00001 0
00002 0
00003 1
Upvotes: 1