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

执行pd.get_dummies时出现Columns must be same length as key错误求助

pandas独热编码触发“Columns must be same length as key”报错解决方案

报错根源

pd.get_dummies()处理单列时,若该列唯一取值数量≥3,即使设置drop_first=True,返回结果依然是多列DataFrame,你直接将多列结果赋值给原DataFrame的单个列df[col],列数量不匹配就会触发该报错。
比如Dependents列如果有0、1、2、3+四个取值,编码后删除第一列还剩3列,无法直接存入原单列的位置。

修复方案

  • 方案1:保留二分类列原列名,多分类列编码后合并
cols = ["Gender", "Married", "Education", "Self_Employed", "Property_Area", "Loan_Status", "Dependents"]
# 处理二分类列,编码后仍为单列,可直接赋值给原列
for col in cols:
    if df[col].nunique() == 2:
        df[col] = pd.get_dummies(df[col], drop_first=True)
    else:
        # 多分类列编码后合并到原表,删除原列
        dummies = pd.get_dummies(df[col], prefix=col, drop_first=True)
        df = pd.concat([df.drop(col, axis=1), dummies], axis=1)
  • 方案2:批量编码所有目标列,无需循环
    如果不需要保留原多分类列的列名,可一次性完成编码合并:
cols = ["Gender", "Married", "Education", "Self_Employed", "Property_Area", "Loan_Status", "Dependents"]
df = pd.concat([
    df.drop(cols, axis=1),
    pd.get_dummies(df[cols], drop_first=True)
], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:45:07