我目前正在研究pandas.DataFrame
,我需要将一些分类变量转换为虚拟变量。
但是,当我从大量数据库中构建pandas.DataFrame
时,我很确定如果只使用pd.get_dummies
,我会错过一些模式。
幸运的是,我从需要转换的功能中检索了所有模态。
我想知道是否有可能(是否使用pd.get_dummies
来根据我检索的方式有效地转换变量?
我正在寻找一个有和没有get_dummies的解决方案,但是没有找到一个解决方案。
谢谢:)
答案 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