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

如何将类似'AlmondCookies'的字符串转为整数适配机器学习模型?

解决方案

方法1:让pd.get_dummies直接输出整数类型

pd.get_dummies默认返回布尔值,但可以通过dtype=int参数直接生成整数类型的二进制特征,无需后续转换,这是最直接的解决方式:

import pandas as pd
data = pd.read_csv('food_ingredients_and_allergens-checkpoint.csv')
data['Food Product'] = data['Food Product'].str.replace(" ", "")
# 指定dtype=int,直接生成整数型哑变量
dummies = pd.get_dummies(data['Food Product'], dtype=int)
data = data.join(dummies)
# 可选:删除原字符串列
data = data.drop('Food Product', axis=1)
print(data.dtypes)

方法2:用LabelEncoder做单列整数映射

如果只需要将每个食品名称映射为唯一整数(非二进制特征),可以用sklearn的LabelEncoder:

import pandas as pd
from sklearn.preprocessing import LabelEncoder
data = pd.read_csv('food_ingredients_and_allergens-checkpoint.csv')
data['Food Product'] = data['Food Product'].str.replace(" ", "")
le = LabelEncoder()
data['Food Product_Int'] = le.fit_transform(data['Food Product'])
# 查看文本与整数的映射关系
print(dict(zip(le.classes_, le.transform(le.classes_))))
print(data[['Food Product', 'Food Product_Int']].head())

方法3:用OneHotEncoder生成整数型独热编码

如果更适配机器学习工作流,想用sklearn的OneHotEncoder生成整数特征:

import pandas as pd
from sklearn.preprocessing import OneHotEncoder
data = pd.read_csv('food_ingredients_and_allergens-checkpoint.csv')
data['Food Product'] = data['Food Product'].str.replace(" ", "")
# 初始化编码器,指定输出整数格式
encoder = OneHotEncoder(sparse_output=False, dtype=int)
# 拟合并转换数据
one_hot = encoder.fit_transform(data[['Food Product']])
# 转换为DataFrame并合并到原数据
one_hot_df = pd.DataFrame(one_hot, columns=encoder.get_feature_names_out(['Food Product']))
data = pd.concat([data, one_hot_df], axis=1)
data = data.drop('Food Product', axis=1)
print(data.head())

为什么之前的转换会报错?

你之前直接对字符串列使用astype('int')或pd.to_numeric必然报错,因为这些方法只能转换数字格式的字符串,而'AlmondCookies'这类纯文本字符串无法直接转为数值类型。必须先通过编码映射,将文本关联到整数,或者在生成哑变量时直接指定整数类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:32:55