我目前有一个名为Country的列,其值可以是USA, Canada, Japan
。例如:
Country
-------
Japan
Japan
USA
....
Canada
我想将值拆分("提取"(为三个单独的列(Country_USA
、Country_Canada
和Country_Japan
(,基本上,如果一列与Country列中的原始值匹配,那么它的值将为1
。例如:
Country --> Country_Japan Country_USA Country_Canada
------- ------------- ----------- ---------------
Japan 1 0 0
USA 0 1 0
Japan 1 0 0
....
使用Panda/Python3.x有没有一种简单(非乏味(的方法可以做到这一点?谢谢
将join
与get_dummies
和add_prefix
:一起使用
print(df.join(df['Country'].str.get_dummies().add_prefix('Country_')))
演示:
df=pd.DataFrame({'Country':['Japan','USA','Japan','Canada']})
print(df.join(df['Country'].str.get_dummies().add_prefix('Country_')))
输出:
Country Country_Canada Country_Japan Country_USA
0 Japan 0 1 0
1 USA 0 0 1
2 Japan 0 1 0
3 Canada 1 0 0
更好的版本,感谢Scott:
print(df.join(pd.get_dummies(df)))
输出:
Country Country_Canada Country_Japan Country_USA
0 Japan 0 1 0
1 USA 0 0 1
2 Japan 0 1 0
3 Canada 1 0 0
Scott的另一个好版本:
print(df.assign(**pd.get_dummies(df)))
输出:
Country Country_Canada Country_Japan Country_USA
0 Japan 0 1 0
1 USA 0 0 1
2 Japan 0 1 0
3 Canada 1 0 0