Python 如何使用熊猫参照一个值创建虚拟变量?
这给了我:Python 如何使用熊猫参照一个值创建虚拟变量?,python,pandas,dataframe,dummy-variable,Python,Pandas,Dataframe,Dummy Variable,这给了我: test = {'ngrp' : ['Manhattan', 'Brooklyn', 'Queens', 'Staten Island', 'Bronx']} test = pd.DataFrame(test) dummy = pd.get_dummies(test['ngrp'], drop_first = True) 我将布朗克斯区作为我的参考层(因为这是被删除的),我如何更改它以指定曼哈顿区应该是我的参考层?我的预期产出是 Brooklyn Manhattan Qu
test = {'ngrp' : ['Manhattan', 'Brooklyn', 'Queens', 'Staten Island', 'Bronx']}
test = pd.DataFrame(test)
dummy = pd.get_dummies(test['ngrp'], drop_first = True)
我将布朗克斯区作为我的参考层(因为这是被删除的),我如何更改它以指定曼哈顿区应该是我的参考层?我的预期产出是
Brooklyn Manhattan Queens Staten Island
0 0 1 0 0
1 1 0 0 0
2 0 0 1 0
3 0 0 0 1
4 0 0 0 0
get_dummies
对值进行排序(按字典顺序),然后创建dummie。这就是为什么你在最初的结果中看不到“布朗克斯”;这是因为它是列中的第一个排序值,所以它首先被删除
要避免您看到的行为,请强制执行“第一次看到”的顺序(即,将其转换为有序的类别)
当然,这会产生副作用,返回带有分类列名的假人,但这几乎从来都不是问题。你所说的“参考级别”是什么意思,预期的输出是什么?如果我想选择一个特定的类别,例如Staten Island,该怎么办?那么它就不再是“第一次看到”了。@leecolin你的问题并没有表明这是一个可能的情况吗?这仍然有效,您只需要根据需要将参数更改为categories。
Brooklyn Queens Staten Island Bronx
0 0 0 0 0
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
pd.get_dummies(
pd.Categorical(test['ngrp'], categories=test['ngrp'].unique(), ordered=True),
drop_first=True)
Brooklyn Queens Staten Island Bronx
0 0 0 0 0
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1