如何在python数据框中编写子查询

时间:2018-09-17 09:28:06

标签: python pandas

我想编写一个等效于以下代码的python代码(pandas数据框)。我可以加入表格,但是子查询部分我无法编码。请帮忙。

        declare    @test1 table (id int, market_date date , value float )
        declare    @test2 table (id int, market_date date , value float )


        insert into @test1 
        values (1,'2018-09-10',100),(1,'2018-09-11',101),(1,'2018-09-12',102)


        insert into @test2 
        values (1,'2018-09-11',100),(1,'2018-09-15',101),(1,'2018-09-14',102) 

        select * from @test1 

        select * from @test2


        select * 
        from @test2 a 
        where  a.market_date >=(select max(b.market_date) from @test1 b where a.id = b.id ) 

我正在通过python连接这些表,这是到目前为止我尝试过的示例。

 df_test2 = pd.read_sql_query('select   * from test.dbo.test2', cnxn )
 df_test1 = pd.read_sql_query('select   * from test.dbo.test1', cnxn )

 d1=pd.merge(df_test2,df_test1,how='inner',on=['id'])

样本数据集和输出

表test1

id  market_date value
1   2018-09-10  100
1   2018-09-11  101
1   2018-09-12  102   

表test2

id  market_date value
1   2018-09-11  100
1   2018-09-15  101
1   2018-09-14  102

输出

id  market_date value
1   2018-09-14  102
1   2018-09-15  101

1 个答案:

答案 0 :(得分:1)

假设, df1

id  market_date value
1   2018-09-10  100
1   2018-09-11  101
1   2018-09-12  102   

df2

id  market_date value
1   2018-09-11  100
1   2018-09-15  101
1   2018-09-14  102

为了获得结果,您可以运行以下代码

d2[d2.market_date > max(d1.market_date)]