当 Pandas 列中不存在某些类别时获取假人[重复]

Posted

技术标签:

【中文标题】当 Pandas 列中不存在某些类别时获取假人[重复]【英文标题】:Get dummies when some categories are not present in a pandas column [duplicate] 【发布时间】:2018-07-09 17:42:57 【问题描述】:

假设我有一个如下所示的 pandas 列

类型 类型1 type2 type3

现在我将采取如下假人: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

但是,如果在我的训练集中有另一个类别 type4Type 列中。那么我将如何使用get_dummies() 方法尽可能多地生成假人。也就是说,在这种情况下,我想生成 4 个虚拟变量,尽管所需列中只有 3 个类别?

【问题讨论】:

嗯,是的,之前看到了。但是,@Wen 给出的答案对我来说并不清楚。所以我还是问了它,并找到了一个很好的简单答案。无论如何,感谢您的注意。 【参考方案1】:

你可以使用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

【讨论】:

哇。那成功了。谢谢.. @AshanPriyadarshana Yw~ 快乐编码

以上是关于当 Pandas 列中不存在某些类别时获取假人[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在同一列中不存在某些 ID 的大表中选择数据。加快查询

如何从时间序列重采样中获取列中的类别计数

如果 Pandas DataFrame 不包含某些子字符串

Python Pandas - 将某些列类型更改为类别

在 Pandas 中删除未使用类别的更快方法?

Dask + Pandas:返回一系列条件假人