ищите значение из фрейма данных pandas в другое, используя условие неравенства - PullRequest
0 голосов
/ 28 января 2019

У меня есть два pd.Dataframes:

A = [ timestamp      key 
      12-12-2012:00  AAAA
      13-12-2012:00  AAAA
    ...]

и второй:

B = [ timestamp      key 
      12-12-2015:00  AAAA
      13-12-2012:00  BBBB
      ...]

Я хочу найти, есть ли для каждой строки в A строка вB (с тем же ключом), где дата указана в (B.timestamp - pd.timedelta(x), B.timestamp)SQL вы можете сделать left join, используя:

ON (A.key = B.key) AND (A.timestamp >= B.timestamp - pd.timedelta(x)) AND (A.timestamp <= B.timestamp)

Есть ли способ получить тот же результат в pandas?

pd.Мое решение до сих пор состоит в том, чтобы реплицировать / добавлять B данных кадра n раз для каждой даты до B.timestamp - pd.timedelta(x).Учитывая все A.timestamp, а затем применить pd.merge, но это должен быть более "питонический" способ получить результат

1 Ответ

0 голосов
/ 28 января 2019

Вы можете использовать, где для этого, я использую простой пример, вы можете повторить то же самое с вашими данными:

import pandas as pd
a=pd.DataFrame(columns=["A","B"])
a["A"]=[1,2,3]
a["B"]=[11,22,33]

print(a.where((a.A > 1) & (a.A <=3)).dropna())

Вывод будет:

    A   B
1   2.0 22.0
2   3.0 33.0

Примечание:Вы можете использовать любое значение в месте 1 или 3 в приведенном выше коде

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...