我有
In [122]: d=pandas.DataFrame({'d_1':['a','x'],'d_2':['x','y']})
In [123]: d
Out[123]:
d_1 d_2
0 a x
1 x y
我想:
a x y
0 1 1 0
1 0 1 1
我不想使用
In [139]: pandas.get_dummies(d)
Out[139]:
d_1_a d_1_x d_2_x d_2_y
0 1.0 0.0 1.0 0.0
1 0.0 1.0 0.0 1.0
因为此函数认为d_1_x和d_2_x是不同的,这对我的应用程序来说需要太多内存。
但是我想使用get_dummies因为它很快;所以,我尝试重命名列并应用get_dummies
In [124]: d.columns=['d' for el in d.columns]
In [141]: d
Out[141]:
d d
0 a x
1 x y
In [151]: pandas.get_dummies(d)
Out[151]:
d_('d',) d_('d',)
0 1.0 1.0
1 1.0 1.0
答案 0 :(得分:1)
您可以尝试这样的事情:
import pandas as pd
d.apply(lambda x: pd.Series(1, x), 1).fillna(0)
# a x y
#0 1.0 1.0 0.0
#1 0.0 1.0 1.0