如何仅为列中的特定值生成虚拟变量?
How to generate dummy variables for only specific values in a column?
我有一个 pandas 数据框列,其中填充了 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
要select这个的某些列,您可以在[] 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
我有一个 pandas 数据框列,其中填充了 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
要select这个的某些列,您可以在[] 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