Pandas get_dummies 包含缺少类别的列?

例如:


import numpy as np

import pandas as pd


df1 = 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_D

0    1           1           0           0           0

1    2           0           1           0           0

2    3           0           0           1           0

3    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_B

0   1            1           0

1   2            1           0

2   3            0           1

3   4            0           1

我的问题是,有没有什么方法可以自动生成 df2_dummy 看起来像 df1_dummy 它有列 ['category_C', 'category_D'] 并且值都是零,看起来像:


df2_dummy:


    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

如果有人可以提供帮助,我将不胜感激!


暮色呼如
浏览 94回答 1
1回答

凤凰求蛊

假设df2的类别与 相同df1,您可以“同步”它们,以便pd.get_dummies适当地处理缺失的类别:pd.get_dummies(    pd.Categorical(df2['category'], categories=df1['category'].unique()))   A  B  C  D0  1  0  0  01  1  0  0  02  0  1  0  03  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_D0   1           1           0           0           01   2           1           0           0           02   3           0           1           0           03   4           0           1           0           0
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python