在for循环中使用.cat.codes()

时间:2018-02-19 08:24:09

标签: python python-3.x

我正在隔离对象类型列,如下所示:

non_num_cols = df.select_dtypes(['object']).columns

现在,我的non_num_cols包含['education', 'capital-gain', 'race', 'sex', 'classification']

等值

我希望使用cat.codes()转换这些内容,如下例所示:

df.education = df.education.astype('category').cat.codes

但是,我想使用“for”循环来完成此操作。我能够达到的最接近的是:

df[non_num_cols] = df[non_num_cols].apply(lambda x: x.astype('category'))

但是,我不能使用.cat.codes()。它抛出

  

TypeError :(“'系列'对象不可调用”,“在索引教育时发生”)

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这应该有效:

  for name in cat_columns:
    df[name] = df[name].astype('category')

  df[non_num_cols] = df[non_num_cols].apply(lambda x: x.cat.codes)