我试图通过对它们进行分解来编码数据框中的类别列表.然后,我将从这一系列列表中创建一个矩阵(将它们标准化为设定长度,创建一个多维数组,并对矩阵中的元素进行一次热编码).
>>> import pandas as pd
>>> df = pd.DataFrame({'A': [ ['Other', 'Male', 'Female', 'Male', 'Other'], ['Female', 'Other', 'Male'] ]})
>>> df['B'] = df.A.apply(lambda x: pd.factorize(x)[0])
>>> df
A B
0 [Other, Male, Female, Male, Other] [0, 1, 2, 1, 0]
1 [Female, Other, Male] [0, 1, 2]
有谁知道如何维护这个系列的编码在行之间是相同的?
解决方法:
您可以使用sklearn中的LabelEncoder
:
适合编码器:
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit([s for l in df.A for s in l])
转换列:
df.A.apply(le.transform)
#0 [2, 1, 0, 1, 2]
#1 [0, 2, 1]
#Name: A, dtype: object
le.classes_
#array(['Female', 'Male', 'Other'],
# dtype='<U6')
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。