我有一个从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
,我将会得到错误提示:
从某种意义上讲,这是有道理的,因为它的只能在 'category' dtype 上使用 .cat 访问器
dtype
是 int8
。
是否可能在同一 DataFrame 中保留类别编码信息,并同时具有整数编码以适应回归器?如何实现?