如何使用错误处理在逗号分隔的熊猫列上执行一种热编码

时间:2020-08-04 07:57:16

标签: pandas scikit-learn

我有一个示例熊猫数据框,我正在尝试对它应用一种热编码。

import pandas as pd
text = ['apple,banana'
        , 'apple'
        , 'orange,banana']

# create pandas df
train_data = pd.DataFrame( text, columns = ['my_category'])

我尝试使用get_dummies方法

# Get dummies
train_data_transformed = pd.get_dummies(train_data, prefix_sep='_', )
# transformed training data 
train_data_transformed.head()

但是我得到了错误的结果,因为我想要的是将文本值中的每个单词都转换为带有0或1标志的单个列-

enter image description here

因此,我想在输出中有3列,看起来像

my_category_apple my_category_orange my_category_banana
      1                       0                   1
      1                       0                   0
      0                       1                   1

另外,如果由于某种原因到达了一些新数据点,而这不是经过训练的编码器模型的一部分,那么我想将所有位都设为低。

因此,如果有新数据

unseen_text = ['mango','orange']
unseen_data = pd.DataFrame( unseen_text, columns = ['my_category'])
unseen_data.head()

enter image description here

然后,我希望输出为-

my_category_apple my_category_orange my_category_banana
      0                       0                   0
      0                       1                   0

如何在熊猫和/或sklearn中实现这一目标? LabelEncoder或OneHotEncoder是否可以帮助我解决此问题?

0 个答案:

没有答案