Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用熊猫参照一个值创建虚拟变量?_Python_Pandas_Dataframe_Dummy Variable - Fatal编程技术网

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