首页 > 解决方案 > 用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.idmin(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 行中的错误,并添加了摘要。

标签: pythonmysqlsqlpandasdataframe

解决方案


尝试这个:

    mydf = mydf[['id', 'table1', 'table2']]

推荐阅读