python - 使用 Panda 拆分(“提取”)列
问题描述
我目前有一个名为 Country 的列,其值为USA, Canada, Japan
. 例如:
Country
-------
Japan
Japan
USA
....
Canada
我想将值拆分(“提取”)为三个单独的列(Country_USA
、Country_Canada
和Country_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 的简单(非繁琐)方法来做到这一点?谢谢!
解决方案
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
推荐阅读
- javascript - 如何计算 Javascript 上两个函数的结果?
- c++ - 如何在 Quick Bench 中开启多线程?
- node.js - 如何在 mineflayer 包 node.js 中拆分单词
- python - Selenium 在 ::before 之后不显示表格内容
- node.js - 如何在 node.js 应用程序中用命令行脚本替换 node-cron
- ruby-on-rails - 对链接进行 ajax 调用单击以更新链接本身(Ruby on Rails)
- java - 从帧缓冲区中的纹理读取像素时来自 glReadPixels 的 glError 1282
- javascript - 为什么我的 Twitter 机器人出现身份验证错误?
- javascript - 添加到功能而不完全覆盖它
- javascript - TypeORM 将 javascript 日期转换为 iso 格式,用于带时区的时间戳