我目前有一个名为“国家/地区”的列,其值可以为USA, Canada, Japan
。例如:
Country
-------
Japan
Japan
USA
....
Canada
我想将值拆分(“提取”)为三个单独的列(Country_USA
,Country_Canada
和Country_Japan
),基本上,一列的值将为{ {1}}(如果它与“国家/地区”列中的原始值匹配)。例如:
1
是否有使用Panda / Python 3.x的简单(非繁琐)方法?谢谢!
答案 0 :(得分:2)
将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