python - 根据其他列中的值将新列添加到 df
问题描述
我有一个类似于下面的数据框:
A B C
GCSE yes GQ
GCSE no GQ
NVQ no VQ
NVQ yes VQ
我需要根据 B 列和 C 列的值添加第四列。有四种可能的结果,EPS、HCI、CAMS、DIGI。它们需要如下所示:
B C D
yes GQ HCI
no GQ EPS
yes VQ DIGI
no VQ CAMS
数据框大约有 37,000 行...
谁能建议最简单的方法来做到这一点?我正在努力寻找不涉及将两列中的值相加、相减、相乘或相除来填充新列的答案。
谢谢
解决方案
您可以创建一个字典并使用map方法 - 这是因为 B 和 C 列是字符串:
mapping = {"yes,GQ": "HCI", "no,GQ": "EPS", "yes,VQ": "DIGI", "no,VQ": "CAMS"}
df = df.assign(D=df.B.str.cat(df.C, sep=",").map(mapping))
df
A B C D
0 GCSE yes GQ HCI
1 GCSE no GQ EPS
2 NVQ no VQ CAMS
3 NVQ yes VQ DIGI
您也可以使用类似于 SQL 的numpy selectcase when
;我确实认为地图就足够了。一定要测试它以验证速度,因为你有很多行。
推荐阅读
- java - 如何优化 jpa 查询
- php - 使用 json_decode 从 JSON 对象中获取键名
- arduino - 时间倒计时编码
- c# - 我们如何通过 c# 中的 main 方法访问私有医生方法
- regex - 回车行的正则表达式
- python - 当玩家回答时如何再次运行我的代码?
- python - Python - 迭代复杂列表比嵌套 for 循环更好的方法
- python - Python subclassing - how to update class attribute that is used by another class attribute
- apache-kafka - Kafka Idempotent producer
- php - 试图从数据库中获取数据并显示到 Dropbox