You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中借助pandas将整数转为哑变量向量,是否有现成函数?

现成工具完全能满足你的需求,不用重复造轮子!

嘿,刚好你要的这种整数转对应位置哑变量的需求,不管用pandas还是scikit-learn都有现成的函数可以直接用,下面给你两种常用的实现方式:

方法一:用pandas的get_dummies(适合快速处理pandas数据)

get_dummies本身就是用来生成哑变量的,只要稍微处理一下就能得到你要的向量格式:

import pandas as pd

# 假设你的特征是一个pandas Series(或者DataFrame的某一列)
category_series = pd.Series([1, 2, 3, 4, 5, 1, 3])

# 生成哑变量DataFrame,每个类别对应一列
dummies_df = pd.get_dummies(category_series, prefix="class")

# 把每行转成你要的向量格式(列表或numpy数组都可以)
one_hot_vectors = dummies_df.values.tolist()
print(one_hot_vectors)
# 输出:[[1, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 0], [0, 0, 0, 1, 0], [0, 0, 0, 0, 1], [1, 0, 0, 0, 0], [0, 0, 1, 0, 0]]

如果你的数据里可能缺失某些类别(比如特征本该有5个类别,但当前数据里只出现了3个),可以手动指定categories参数来确保所有类别都被包含:

dummies_df = pd.get_dummies(category_series, prefix="class", categories=[1, 2, 3, 4, 5])

方法二:用scikit-learn的OneHotEncoder(适合机器学习流程)

如果你后续要把这个编码和机器学习模型结合,OneHotEncoder会更灵活,它支持拟合后复用编码规则:

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# 把数据转成二维数组(sklearn的编码器要求输入是二维的)
category_data = np.array([1, 2, 3, 4, 5, 1, 3]).reshape(-1, 1)

# 初始化编码器,指定所有类别,关闭稀疏输出
encoder = OneHotEncoder(categories=[[1, 2, 3, 4, 5]], sparse_output=False)

# 拟合并转换数据
one_hot_vectors = encoder.fit_transform(category_data)
print(one_hot_vectors.tolist())
# 输出和上面完全一致的向量列表

这两种方法都能完美实现你要的效果,完全不用自己手动写循环生成向量~

内容的提问来源于stack exchange,提问作者adrien22

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:21:08