sql - 如何根据复杂条件加入2个数据框
问题描述
我有2个数据框:
A :
+----------+------+-------------+-------------+
|title |name |product |available |
+----------+------+-------------+-------------+
|AAAAA |WW |indoor camera|true |
|A121AA |AA |indoor camera|true |
|AACCCA |YY |indoor camera|true |
+----------+------+-------------+-------------+
乙:
+-------------+----------+-------------------+
| product | title | name |
+-------------+----------+-------------------+
|indoor camera|FFFFF |WW |
|indoor camera|F1FFF |WW |
|indoor camera|FYFFF |YY |
|indoor camera|BBB |MNMN |
|indoor camera|CCC |MNMN |
|indoor camera|DDD |BBBNNN |
+-------------+----------+-------------------+
我需要得到一个看起来像这样的连接数据:
+----------+------+-------------+-------------+
|title |name |product |available |
+----------+------+-------------+-------------+
|AAAAA |WW |indoor camera|true |
|AACCCA |YY |indoor camera|true |
|A121AA |AA |indoor camera|true |
|BBB |MNMN |indoor camera|null |
|CCC |MNMN |indoor camera|null |
|DDD |BBBNNN|indoor camera|null |
+----------+------+-------------+-------------+
我想基于“产品”加入并获取加入的数据。如果“名称”在 A 中,那么最终连接的数据应该具有来自 A 的标题(仅例如 WW),并从 B 获得休息。我不确定我需要什么样的连接。有人可以建议我任何想法吗?
解决方案
只是想看看我是否正确理解了这一点。您想加入产品、名称和标题上的框架,但只保留数据存在于 A 中的框架。如果是这样,您可以尝试:
a.join(b, on=['product', 'name', 'title'], how='left').show()
推荐阅读
- swift - 如何在 Swift 中为字符串添加引号?
- mips - 地址中的值更改而不在 mips 中更改它
- flutter - 在 Flutter 中创建到页面的即时过渡
- esp8266 - Micropython:如何在启动时释放所有 RAM 内存
- swift - 无法将“NSAsynchronousFetchResult”(0x103e13388)类型的值转换为“NSArray”(0x10435cf28)Swift
- java - 仅当我在其中时,如何让片段开始?
- c# - 是否可以将字段反序列化为属性?
- input - 输入中的 Unicode 字符不显示
- csv - 如何从 Access 正确导出为 utf-8 csv,修复格式问题
- python - 如何使用python查找两个日期之间的日期,不包括开始日期和结束日期