繁体   English   中英

Pandas get_dummies 包含缺少类别的列?

[英]Pandas get_dummies include columns for missing categories?

例如:

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

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

假设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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM