您好,有一个熊猫数据 df
包含分类变量。
df=pandas.DataFrame(data=[['male','blue'],['female','brown'],
['male','black']],columns=['gender','eyes'])
df
Out[16]:
gender eyes
0 male blue
1 female brown
2 male black
使用函数 get_dummies 我得到以下数据框
df_dummies = pandas.get_dummies(df)
df_dummies
Out[18]:
gender_female gender_male eyes_black eyes_blue eyes_brown
0 0 1 0 1 0
1 1 0 0 0 1
2 0 1 1 0 0
Owever 列 gender_female
和 gender_male
包含相同的信息,因为原始列可以采用二进制值。有没有一种(聪明的)方法可以只保留两列中的一列?
更新
指某东西的用途
df_dummies = pandas.get_dummies(df,drop_first=True)
会给我
df_dummies
Out[21]:
gender_male eyes_blue eyes_brown
0 1 1 0
1 0 0 1
2 1 0 0
但我想删除最初我只有两种可能性的列
期望的结果应该是
df_dummies
Out[18]:
gender_male eyes_black eyes_blue eyes_brown
0 1 0 1 0
1 0 0 0 1
2 1 1 0 0
原文由 gabboshow 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,您可以使用参数
dropfirst
:从 文档 中:
要拥有 --- 的所有虚拟列,以及
gender
eyes
的虚拟列,请使用:输出:
更一般:
输出: