Python 熊猫得到了具有相同/相同列名的傻瓜
我有 我想:Python 熊猫得到了具有相同/相同列名的傻瓜,python,pandas,Python,Pandas,我有 我想: 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 因为这个函数认为d_1_x和d_2_x是不同的,我的应用程序需要太多的内存 不过,我确实想使用get_假人,因为它速度快;因此,我尝试重命名列并应用
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
因为这个函数认为d_1_x和d_2_x是不同的,我的应用程序需要太多的内存
不过,我确实想使用get_假人,因为它速度快;因此,我尝试重命名列并应用get_Dummie
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
您可以尝试以下方法:
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
非常感谢。为了澄清,它将是
d.apply(λx:pd.Series(1,index=x),axis=1)。fillna(0)
?True。为了简单起见,我省略了参数名,但最好是显式声明参数名?如果您希望结果是x,y等的计数
,您可以执行d.apply(lambda x:x.value_counts(),1)。fillna(0)
。感谢您,这是为了响应:如果d=pandas.DataFrame({'d1':['x','x'],'d2':['x','y'])怎么办
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