Python OneHotEncoder更改名称列
我使用OneHotencoder将分类列转换为数字数据,但算法会更改列的名称。如何保存同名列 (我使用python 3) 我的数据框如下所示:Python OneHotEncoder更改名称列,python,label,categorical-data,one-hot-encoding,Python,Label,Categorical Data,One Hot Encoding,我使用OneHotencoder将分类列转换为数字数据,但算法会更改列的名称。如何保存同名列 (我使用python 3) 我的数据框如下所示: >>> import pandas >>> import numpy >>> ar = numpy.array([['yassine', 1], ['jack',7], ['ahmed',4]]) >>> df = pandas.DataFrame(ar, columns = ['
>>> import pandas
>>> import numpy
>>> ar = numpy.array([['yassine', 1], ['jack',7], ['ahmed',4]])
>>> df = pandas.DataFrame(ar, columns = ['name', 'label'])
>>> df
name label
0 yassine 1
1 jack 7
2 ahmed 4
>>> import category_encoders as ce
>>> ohe = ce.OneHotEncoder(handle_unknown='ignore',
use_cat_names=True)
>>> label_fournisseur = ohe.fit_transform(list(df['name']))
>>> label_fournisseur
0_yassine 0_jack 0_ahmed
0 1 0 0
1 0 1 0
2 0 0 1
我需要列保持不变,不做任何更改:
yassine jack ahmed
0 1 0 0
1 0 1 0
2 0 0 1
谢谢您可以根据需要更改列的名称。要删除“0”,您可以执行以下操作,例如:
label_fournisseur.columns = [ x[2:] for x in label_fournisseur.columns ]
获取所需内容的另一种方法(无需另一个库):
结果:
ahmed jack yassine
0 0 0 1
1 0 1 0
2 1 0 0
注意:如果每个观察(您的案例)的输入有一个类别,get_dummies会执行一个热编码。对于其他情况(每次观察有多个类别),整个问题应更改为不同的(因为列名中不能只有一个类别)。您可以根据需要更改列名。要删除“0”,您可以执行以下操作,例如:
label_fournisseur.columns = [ x[2:] for x in label_fournisseur.columns ]
获取所需内容的另一种方法(无需另一个库):
结果:
ahmed jack yassine
0 0 0 1
1 0 1 0
2 1 0 0
注意:如果每个观察(您的案例)的输入有一个类别,get_dummies会执行一个热编码。对于其他情况(每次观察多个类别),整个问题应更改为不同的(因为列名中不能只有一个类别)。谢谢@vladmihaisima,但每次算法都会进行另一次修改,如0_yassine_或0_0yassine。我不明白为什么一般来说,你不需要列名。如果要检索初始类别,请使用逆变换。拥有可识别的列名(例如用于调试)会有所帮助,如果需要,您可以更改列名,或者使用其他库。我已经相应地编辑了答案。谢谢@vladmihaisima,但每次算法都会进行另一次修改,如0_yassine_或0_0yassine。我不明白为什么一般来说,你不需要列名。如果要检索初始类别,请使用逆变换。拥有可识别的列名(例如用于调试)会有所帮助,如果需要,您可以更改列名,或者使用其他库。我已相应地编辑了答案。