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

使用pd.get_dummies做独热编码仅返回0和1,是使用方法错误吗?

问题原因排查与解决

你对pd.get_dummies的基础使用方法没有错误,出现仅返回0、1两个值的情况可按以下优先级排查:

  • 首先确认源列的唯一值数量是否符合预期,执行以下代码验证:
    # 查看Name列的唯一值数量
    print(test_data['Name'].nunique())
    # 打印所有唯一值
    print(test_data['Name'].unique())
    
    如果输出的唯一值数量为2,说明问题出在源数据处理环节:你在之前的代码中意外修改了Name列的取值,导致原本的8种类型被覆盖为仅2种取值,需要回溯前面的数据清洗、赋值逻辑修正问题。
  • 如果源列唯一值数量确实为8,大概率是pandas的默认显示设置导致的误解:当DataFrame列数较多时,pandas会自动折叠隐藏中间列,仅展示首尾部分内容,你误以为仅返回了0/1值。执行以下代码调整显示设置即可查看全部独热编码列:
    # 取消最大显示列数限制
    pd.set_option('display.max_columns', None)
    # 打印全量独热编码结果
    print(one_hot_encoded)
    # 也可直接查看结果维度确认是否符合预期,正常应该返回(500, 8)
    print(one_hot_encoded.shape)
    
  • 少数情况是分类列设置错误导致:如果你的Name列被显式设置为category类型,且仅指定了2个分类,就算实际数据包含8种取值,pd.get_dummies也只会生成对应2个分类的编码列,可通过以下代码修正分类设置:
    test_data['Name'] = test_data['Name'].astype('category')
    # 重置分类为所有实际存在的唯一值
    test_data['Name'] = test_data['Name'].cat.set_categories(test_data['Name'].unique())
    one_hot_encoded = pd.get_dummies(test_data['Name'])
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 01:45:06