【问题标题】:LabelEncoder won't encode strings?LabelEncoder 不会编码字符串?
【发布时间】:2018-09-23 17:11:12
【问题描述】:

我正在尝试将 pandas df 的非数字列编码为数值。我正在使用

df = df.fillna('0')
msk = np.random.rand(len(df)) < 0.8
df_train = df[msk]
df_test = df[~msk]
columns_to_encode = df.select_dtypes(exclude=[np.number]).columns
encoder_dict = {col: LabelEncoder() for col in columns_to_encode }
df_train_enc = df_train
df_test_enc = df_test
for col in columns_to_encode:
    encoder_dict[col].fit_transform(df_train_enc[col])

但是,这会引发错误TypeError: '&lt;' not supported between instances of 'str' and 'float'。我在这里想念什么?我认为 LabelEncoder 应该能够将字符串转换为数字...

【问题讨论】:

标签: python pandas scikit-learn


【解决方案1】:

LabelEncoder 可以毫无问题地处理字符串标签,因此,如果您的数据中有混合类型(例如,由于缺少值),您可以使用:

for col in columns_to_encode:
    encoder_dict[col].fit_transform(df_train_enc[col].astype(str))

【讨论】:

  • 你试过astype(str)吗?
  • 是的,这有帮助,将在 7 分钟内接受。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 2013-12-29
  • 2020-03-04
  • 1970-01-01
相关资源
最近更新 更多