有没有一种方法可以将熊猫的字典将类别变量转换为虚拟变量?

时间:2019-05-29 13:34:39

标签: python pandas

我目前正在研究pandas.DataFrame,我需要将一些分类变量转换为虚拟变量。

但是,当我从大量数据库中构建pandas.DataFrame时,我很确定如果只使用pd.get_dummies,我会错过一些模式。

幸运的是,我从需要转换的功能中检索了所有模态。

我想知道是否有可能(是否使用pd.get_dummies来根据我检索的方式有效地转换变量?

我正在寻找一个有和没有get_dummies的解决方案,但是没有找到一个解决方案。

谢谢:)

1 个答案:

答案 0 :(得分:2)

IIUC,您可以使用Pandas.Categorical dtype来处理。

示例

# Setup
np.random.seed(0)
df = pd.DataFrame(np.random.choice(['A', 'B', 'C'], 6), columns=['cat'])
print(df)

[出]

  cat
0   A
1   B
2   A
3   B
4   B
5   C

在此运行pandas.get_dummies会产生...

pd.get_dummies(df['cat'])

[出]

   A  B  C
0  1  0  0
1  0  1  0
2  1  0  0
3  0  1  0
4  0  1  0
5  0  0  1    

现在将此Series转换为categorical dtype,并传递已知类别的列表...

categories = ['A', 'B', 'C', 'D', 'E']
df['cat'] = pd.Categorical(df['cat'], categories=categories)

pd.get_dummies(df['cat'])

[出]

   A  B  C  D  E
0  1  0  0  0  0
1  0  1  0  0  0
2  1  0  0  0  0
3  0  1  0  0  0
4  0  1  0  0  0
5  0  0  1  0  0