首页 > 解决方案 > 使用 Panda 拆分(“提取”)列

问题描述

我目前有一个名为 Country 的列,其值为USA, Canada, Japan. 例如:

Country
-------
Japan
Japan
USA
....
Canada

我想将值拆分(“提取”)为三个单独的列(Country_USACountry_CanadaCountry_Japan),基本上,1如果与 Country 列中的原始值匹配,列的值将是 。例如:

Country        -->    Country_Japan    Country_USA    Country_Canada
-------               -------------    -----------    ---------------
Japan                        1              0                0
USA                          0              1                0
Japan                        1              0                0
....

有没有使用 Panda / Python 3.x 的简单(非繁琐)方法来做到这一点?谢谢!

标签: pythonpython-3.xpandas

解决方案


joinget_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

推荐阅读