繁体   English   中英

如何只为列中的特定值生成虚拟变量?

[英]How to generate dummy variables for only specific values in a column?

我有一个熊猫数据框列,其中包含100个国家/地区的国家/地区代码。 我想使用它们进行回归,但是我只想为数据集中的特定国家/地区创建虚拟变量。

我认为这可以工作:

dummies = pd.get_dummies(df.CountryCode, prefix='cc_')
df_and_dummies = pd.concat([df,dummies[dummies['cc_US', 'cc_GB']]], axis=1)
df_and_dummies

但这给了我错误:

KeyError: ('cc_US', 'cc_GB')

我的数据框目前看起来像:

dframe = pd.DataFrame({'A': ['a', 'b', 'a'], 'B': ['b', 'a', 'c'],
                'CountryCode': ['UK', 'US', 'RU']})
dframe

没有假人

但我希望它看起来像这样:

具有虚拟变量

有没有一种简单的方法来指定要包含在get_dummies方法中的值,还是有另一种方法来标识特定的虚拟变量?

假人看起来像这样:

In [25]: dummies
Out[25]:
   cc_RU  cc_UK  cc_US
0      0      1      0
1      0      0      1
2      1      0      0

要选择其中的某些列,可以在[] getitem中提供列名称的​​列表:

In [27]: dummies[['cc_US', 'cc_UK']]
Out[27]:
   cc_US  cc_UK
0      0      1
1      1      0
2      0      0

因此,您实际上错过了[一个括号。
完整的代码变为:

In [29]: pd.concat([df, dummies[['cc_US', 'cc_UK']]], axis=1)
Out[29]:
   A  B CountryCode  cc_US  cc_UK
0  a  b          UK      0      1
1  b  a          US      1      0
2  a  c          RU      0      0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM