我想编写一个等效于以下代码的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
答案 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)]