在某些类别不存在时使用虚拟变量

我有一组数据框架,其中一个列包含分类变量。我希望将其转换为多个虚拟变量,通常我会使用get_dummies来实现。

然而,get_dummies会查看每个数据框架中的数据,以确定有多少个类别,从而创建相应数量的虚拟变量。但在当前我处理的问题中,我事先已经知道可能的类别有哪些。然而,当单独查看每个数据框架时,并不一定所有类别都会出现。

我的问题是:是否有办法向get_dummies(或类似功能的函数)传递类别的名称,以便对于在某个数据框架中未出现的类别,它会创建一个全为0的列?

例如,将这个:

categories = ['a', 'b', 'c']   cat1   a2   b3   a

转换成这样:

  cat_a  cat_b  cat_c1   1      0      02   0      1      03   1      0      0

回答:

使用转置和重新索引

import pandas as pdcats = ['a', 'b', 'c']df = pd.DataFrame({'cat': ['a', 'b', 'a']})dummies = pd.get_dummies(df, prefix='', prefix_sep='')dummies = dummies.T.reindex(cats).T.fillna(0)print dummies    a    b    c0  1.0  0.0  0.01  0.0  1.0  0.02  1.0  0.0  0.0

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注