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

特征工程对Type列编码触发ValueError: Columns must be same length as key求助

问题根因

你报错的核心原因是 pd.get_dummies() 对单列处理后返回的是多列DataFrame,而你直接尝试把多列结果赋值给原数据框的单列df['Type'],左右维度不匹配触发报错。比如你的Type列如果有Free、Paid两个取值,pd.get_dummies(df['Type'])会返回2列的结果,你直接赋值给1个列必然失败。

修复方案

方案1:仅保留编码后的单列(适合二分类场景)

如果你的Type列仅包含2种取值,只需要保留1列独热编码结果即可直接赋值给原列:

# 取get_dummies返回结果的第一列赋值,drop_first=True还可以避免多重共线性问题
df['Type'] = pd.get_dummies(df['Type'], drop_first=True)

方案2:将多列编码结果合并到原数据集(适合多分类场景)

如果你的Type列有超过2种取值,参考你之前处理Category列的逻辑,用concat合并多列编码结果:

# 生成Type列的独热编码,列名前缀为type_
type_dummies = pd.get_dummies(df['Type'], prefix='type')
# 合并到原数据集,同时删除原Type列避免冗余
df = pd.concat([df.drop('Type', axis=1), type_dummies], axis=1)
补充排查点

建议执行编码前先检查Type列的取值分布和空值情况,避免遗漏异常值导致编码结果不符合预期:

# 查看Type列的所有取值及计数,包含空值
print(df['Type'].value_counts(dropna=False))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 11:06:04