【发布时间】:2019-07-10 01:07:53
【问题描述】:
我有一个从 csv 读取的 Pandas DataFrame,其中包含一些带有字符串值的列,但实际上是 object 类型。因为它们是分类的,所以我将它们转换为category,然后转换为整数表示,然后我拟合一个随机森林回归器。
for col in df_raw.select_dtypes(include='object'):
df_raw[col] = df_raw[col].astype('category')
df_raw[col] = df_raw[col].cat.codes #not 'category' type anymore.
问题是如果我这样做,那么dtype 会立即转换为int,我会丢失cat 信息,我稍后需要。
例如,在循环的第一行之后,我可以运行df_raw[col].cat,我会得到预期的索引类别。但是一旦执行第二行,dtype 列变为int8,就会报错:
只能将 .cat 访问器与 'category' dtype 一起使用`
这在某种程度上说得通,因为它的 dtype 是 int8。
是否可以在同一个 DataFrame 中保留类别编码信息,同时使用整数编码来适应回归器?怎么样?
【问题讨论】:
-
请举例输入
-
更精确的MCVE 确实有助于准确地确定问题的答案。
-
您是否有理由希望(现在正确)整数编码列成为分类 dtype?列 dtypes 的主要原因是 pandas/numpy 能够有效地处理它们......
-
@roganjosh 我已经更新了问题,它是否完整。
-
@G.Anderson,只是因为我希望以后能够查找编码,而不必跟踪一组额外的列或新变量。或者说,轻松重新排序。