当 pandas 列中不存在某些类别时获取虚拟值

Ash*_*ana 3 python data-processing dataframe pandas data-science

假设我有一个 pandas 专栏,如下所示

类型
类型1
类型2
类型3

现在我将采用以下虚拟模型:
type_dummies = pd.get_dummies(["Type"], prefix="type")

然后将其与主 DataFrame 连接后,生成的 df 将如下所示:

df.drop(['Type'], axis=1, inplace=True)
df = df.join(type_dummies)
df.head()

type_type1    type_type2    type_type3
   1              0             0
   0              1             0
   0              0             1
Run Code Online (Sandbox Code Playgroud)

但是,如果我的训练集中有另一个类别(如列type4中所示)怎么办?Type那么我将如何使用get_dummies()方法来生成我想要的虚拟对象。也就是说,在这种情况下我想生成 4 个虚拟变量,尽管所需列中只有 3 个类别?

WeN*_*Ben 5

您可以使用categroy数据类型

df.Type=df.Type.astype('category', categories=['type1','type2','type3','type4'])
df
Out[200]: 
    Type
0  type1
1  type2
2  type3
pd.get_dummies(df["Type"], prefix="type")
Out[201]: 
   type_type1  type_type2  type_type3  type_type4
0           1           0           0           0
1           0           1           0           0
2           0           0           1           0
Run Code Online (Sandbox Code Playgroud)