Pandas Get_dummies生成的列比预期的多

Pandas Get_dummies生成的列比预期的多,pandas,Pandas,我在一列数据上使用get_假人,这些数据有零或“D”或“E”。它没有生成两个列,而是生成了5-C、D、E、N、O。我不知道它们是什么,也不知道如何使它只生成2个列 当我仅仅拉动该列时,它会显示0、D和E,但当我将其放入get_时,dummies会添加额外的列 data[[2]] 0 0 D 0 0 0 0 D 0 0 当我这样做时: dummy = pd.get_dummies(data[2], dummy_na = False) dummy.head() 我明白了 什么是C、N和O?我根本

我在一列数据上使用get_假人,这些数据有零或“D”或“E”。它没有生成两个列,而是生成了5-C、D、E、N、O。我不知道它们是什么,也不知道如何使它只生成2个列

当我仅仅拉动该列时,它会显示0、D和E,但当我将其放入get_时,dummies会添加额外的列

data[[2]]
0
0
D
0
0
0
0
D
0
0
当我这样做时:

dummy = pd.get_dummies(data[2], dummy_na = False)
dummy.head()
我明白了

什么是C、N和O?我根本不明白它显示了什么。

设置
你的结果

dummy = pd.get_dummies(data[2], dummy_na=False )
dummy.head()

   0  C  D  E  N  O  PreferredContactTime
0  0  0  0  0  0  0                     1
1  1  0  0  0  0  0                     0
2  1  0  0  0  0  0                     0
3  0  0  1  0  0  0                     0
4  1  0  0  0  0  0                     0

pd.get\u dummies
始终提供列为
s.unique()
的数据帧。您是否检查了数据[2].unique()?什么是数据[2].dtype?我猜是
category
所以你得到了未使用分类的假人,对了,故事的寓意是:使用
remove\u unused\u categories
删除数据中实际上不存在的分类
pd.get_dummies(数据[2].cat.remove_unused_categories(),dummy_na=False)
(或者只要转换成字符串,随便哪个都行)。是的,我刚刚摆脱了它们。只是不知道他们为什么会出现在startwith。。
dtype = pd.CategoricalDtype([0, 'C', 'D', 'E', 'N', 'O', 'PreferredContactTime'])

data = pd.DataFrame({2: [
    'PreferredContactTime', 0, 0, 'D', 0, 0, 0, 0, 'D', 0, 0
]}).astype(dtype)
dummy = pd.get_dummies(data[2], dummy_na=False )
dummy.head()

   0  C  D  E  N  O  PreferredContactTime
0  0  0  0  0  0  0                     1
1  1  0  0  0  0  0                     0
2  1  0  0  0  0  0                     0
3  0  0  1  0  0  0                     0
4  1  0  0  0  0  0                     0