Как написать подзапросы в Python Dataframe - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу написать код 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   

таблица теста2

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 голосов
/ 17 сентября 2018

Допустим, 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)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...