为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas get_dummies 包含缺少类别的列?

Pandas get_dummies 包含缺少类别的列?

暮色呼如 2022-10-06 16:06:42
例如:import numpy as npimport pandas as pddf1 = pd.DataFrame({    'id': [1, 2, 3, 4],     'category': ['A', 'B', 'C', 'D']})df1_dummy = pd.get_dummies(df1)print(df1_dummy)然后我得到:    id  category_A  category_B  category_C  category_D0    1           1           0           0           01    2           0           1           0           02    3           0           0           1           03    4           0           0           0           1但是,我有另一个 DataFrame,它看起来像:df2 = pd.DataFrame({    'id': [1, 2, 3, 4],     'category': ['A', 'A', 'B', 'B']})df2_dummy = pd.get_dummies(df2)print(df2_dummy)我有:   id   category_A  category_B0   1            1           01   2            1           02   3            0           13   4            0           1我的问题是,有没有什么方法可以自动生成 df2_dummy 看起来像 df1_dummy 它有列 ['category_C', 'category_D'] 并且值都是零,看起来像:df2_dummy:    id  category_A  category_B  category_C  category_D0    1           1           0           0           01    2           1           0           0           02    3           0           1           0           03    4           0           1           0           0如果有人可以提供帮助,我将不胜感激!
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

假设df2的类别与 相同df1,您可以“同步”它们,以便pd.get_dummies适当地处理缺失的类别:


pd.get_dummies(

    pd.Categorical(df2['category'], categories=df1['category'].unique()))


   A  B  C  D

0  1  0  0  0

1  1  0  0  0

2  0  1  0  0

3  0  1  0  0

这是你要做的:


df2['category'] = pd.Categorical(

    df2['category'], categories=df1['category'].unique())

pd.get_dummies(df2)


   id  category_A  category_B  category_C  category_D

0   1           1           0           0           0

1   2           1           0           0           0

2   3           0           1           0           0

3   4           0           1           0           0


查看完整回答
反对 回复 2022-10-06
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信