首页 > 解决方案 > 与 sklearn 编码器链接时,python pandas astype 无法正常工作

问题描述

熊猫 == 1.2.3
sklearn == 0.24.2

尝试使用 Ordinal Encoder 将多个二进制列转换为 1/0,然后将它们的数据类型更改为“int8”

MRE:

df = pd.DataFrame({"A":["True", "False", "True", "False", "False"], 
                   "B":["Yes", "No", "Yes", "Yes", "Yes"],
                   "C":[1, 4, 1, 4, 4]})

运行以下将数据类型转换为“integer64”并将“float16”转换为“float64”。

bin_cols = ["A", "B", "C"]
df[bin_cols] = OrdinalEncoder() \
                .fit_transform(df[bin_cols]) \
                .astype('int8')
df.dtypes
>>> A  int64
>>> B  int64
>>> C  int64

如果我拿出来表演

df[bin_cols].astype('int8').dtypes

>>> A  int8
>>> B  int8
>>> C  int8

正确转换为“integer8”

可能是什么问题呢?

编辑:如果我运行第二个代码块两次它可以工作......

标签: pythonpandasscikit-learn

解决方案


推荐阅读