Мне нужно объединить 2 кадра данных с пандами и добавить фильтр - PullRequest
0 голосов
/ 11 октября 2019

Мне нужно объединить 2 кадра данных с пандами. Я использую ноутбук Jupyter. Я могу объединить, но я не могу отфильтровать данные (например, оператор WHERE для SQL). Кадры данных имеют одинаковые сообщения, которые были помечены 0 или 1 метками. Фреймы данных имеют 3 столбца с одинаковыми значениями - Id, timestamp, message и 2 столбца high, low с различными значениями маркировки (1 или 0). Я произвел слияние со столбцом 'Id'

Я пытаюсь увидеть, например:

Есть ли время, когда Df1 имеет столбец 'high' со значением == 1, а Df2 имеет столбец 'low' со значением == 1 для того жезаявление? или наоборот?

df1.merge(df2, on = ['Id'], how = 'inner')

Теперь мне нужно отфильтровать, но я не могу найти правильный синтаксис ...

(df1[(df1["high_df1"] == 1)]) & (df2[(df2["low_df2"] == 1)])

Я мог бы визуализировать ответ с помощью отдельных утверждений:

df1.loc[(df1['high_df1'] == 1) & (df2['low_df2'] == 1)]
df2.loc[(df2['low_df2'] == 1) & (df1['high_df1'] == 1)]

Но я бы хотел видеть результаты в одной таблице.

Может кто-нибудь мне помочь?

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

Есть ли время, когда Df1 имеет столбец 'high' со значением == 1, а Df2 имеет столбец 'low' со значением == 1 для того же оператора? или наоборот?

Альтернативным решением является применение соответствующего query():

df1.merge(df2, on=['Id'], how='inner').query('high_df1==1&low_df2==1|low_df1==1&high_df2==1')
0 голосов
/ 11 октября 2019

Как я понял:

df1 = df1.merge(df2, on = ['Id'], how='left')

df1.where((df1['high_df1'] == 1) & (df1['low_df2'] == 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...