python - 用dataframe重写sql查询;如何从选择中混合不同的来源
问题描述
我需要使用 pandas 和数据框重写 sql 查询,并通过几个连接到 python。我可以毫无问题地进行连接,但是当我想引用并非严格来自连接的数据时,它会变得复杂。
要重写的 SQL:
SELECT
table1.id,
field1,
field2,
count(DISTINCT x.apple, x.grape) AS fruits,
min(x.time) min_value
FROM table1
JOIN table2 x using(id)
LEFT JOIN table3 using(id)
GROUP BY 1,2,3
我当前的代码:
mydf, df2, df3 = ...
mydf.merge(df2, on=['id'], how='inner')
mydf.merge(df3, on['id'], how='left')
mydf = mydf[['id', 'field1', 'field2']] # problem, missing fruits, min_value and id should be table1.id
mydf.groupby('id', 'field1', 'field2')
我知道如何加入它们,但我不知道如何创建一个数据框,该数据框将包含来自选择的所需元素,例如table1.id
或min(x.time) min_value
表
Table1 columns: [id, field1, field2, field1_2, field1_3]
Table2 columns: [id, field1, field2, apple, grape, time, field2_1, field2_2]
Table3 columns: [id, field1, field2, field3_1, field3_2]
编辑:我添加了示例表,更正了代码第 4 行中的错误,并添加了摘要。
解决方案
尝试这个:
mydf = mydf[['id', 'table1', 'table2']]
推荐阅读
- excel - 如何在特定行(VBA)上方添加新行?
- twitter-bootstrap - 如果移动,Bootstrap 4 移动到新行
- setcookie - IBM Http Server - 无法更新 cookie
- django - 模板中未显示的表单中的 DJANGO 初始值(有些不显示)
- laravel - 在 https 中加载 swagger UI 内容 - Lumen
- ms-access-2010 - 我可以在 Ms Access Form 的未绑定文本字段中的 Dcount 公式后添加文本吗?
- vue.js - Promise 被拒绝并且无法在 VUE 和 Directus 中获取Collections 或 getItems
- laravel - 如何修复 Laravel 十进制数问题
- r - R 混淆矩阵误差数据和参考因素同级别
- matplotlib - 从轮子为 aws lambda 安装 matplotlib