如何在Pandas中对数值型数据实现One-Hot Encode独热编码?
pandas数值型数据独热编码实现方案
你对get_dummies()仅支持字符串类型的认知是误区,pandas原生的pd.get_dummies()完全支持对数值型列执行独热编码,你要的效果可以直接通过该方法实现,不需要额外自定义函数。
核心实现逻辑
默认情况下get_dummies()只会自动对object(字符串)和category类型的列做编码,数值型列需要通过columns参数手动指定要编码的列名,即可生成列名_取值格式的独热特征,额外指定dtype=int可以输出整数格式的0/1值,和你预期的输出完全匹配。
代码示例
import pandas as pd # 构造示例数据 df = pd.DataFrame({'A': [0, 1, 0, 2], 'B': [0, 0, 1, 0]}) # 直接调用get_dummies实现需求 df_oh = pd.get_dummies(df, columns=['A', 'B'], dtype=int) print(df_oh)
输出结果
A_0 A_1 A_2 B_0 B_1 0 1 0 0 1 0 1 0 1 0 1 0 2 1 0 0 0 1 3 0 0 1 1 0
扩展说明
如果需要对全表所有列做独热编码,不用逐个输入列名,直接把columns参数赋值为df.columns即可:
df_oh = pd.get_dummies(df, columns=df.columns, dtype=int)
内容的提问来源于stack exchange,提问作者WhoDatBoy
相关产品推荐
相关产品推荐

