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

Python 在for循环中使用.cat.codes(),python,python-3.x,Python,Python 3.x,我对对象类型列进行了如下分离: non_num_cols=df。选择_数据类型['object']。列 现在,我的non_num_cols包含像[‘教育’、‘资本收益’、‘种族’、‘性别’、‘分类’]这样的值 我想用cat.CODE转换这些代码,如下例所示: df.education = df.education.astype('category').cat.codes 但是,我想使用for循环来实现这一点。我能做到的最接近的是: df[non_num_cols] = df[non_num_c

我对对象类型列进行了如下分离:

non_num_cols=df。选择_数据类型['object']。列

现在,我的non_num_cols包含像[‘教育’、‘资本收益’、‘种族’、‘性别’、‘分类’]这样的值

我想用cat.CODE转换这些代码,如下例所示:

df.education = df.education.astype('category').cat.codes
但是,我想使用for循环来实现这一点。我能做到的最接近的是:

df[non_num_cols] = df[non_num_cols].apply(lambda x: x.astype('category'))
但是,我不能将.cat.code用于此。它抛出

TypeError:“Series”对象不可调用,“发生在索引处”

有什么建议吗?

这应该可以:

  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)

.类别代码->类别代码。如果某个东西不是函数,不要调用它。@DyZ很好。工作起来很有魅力。嗨,Andrea,我编辑了你的答案来去除这些绒毛。看,这里的重点是问题及其解决方案。最好解释一下为什么你的代码能解决这个问题。祝你一切顺利!编辑:我只是看到用户DYZ在问题下方的评论中解释了这个问题,无论如何,最好有一个正确的答案