У меня есть два кадра данных, и я пытаюсь использовать один кадр данных в качестве фильтра df, а другой - тот, который фильтруется. Вот как выглядят два кадра данных:
df #(filtering)
phrase1 date1
0 cat 2012-03-04
1 tree 2015-05-02
2 snail 2002-08-27
3 dog 2004-02-27
df1 #(being filtered)
id phrase2 date2
0 abc12 cat nip 2003-03-04
1 def34 baobab tree 2009-05-02
2 ghi56 lazy dog 2011-08-27
3 jkl78 poor snail 2014-08-27
4 mno90 fat cat 2008-08-27
Я пытаюсь реализовать некоторую логику, где:
если какая-либо из строк в столбце phase1
кадра данных df
совпадает с любой из строк в столбце phase2
кадра данных df1
, И , если date1
в кадре данных df
предшествует date2
в кадре данных df1
:
- drop слово, которое соответствует df1['phrase2']
, если любая из строк в столбце phase1
кадра данных df
соответствует любой из строк в столбце phase2
кадра данных df1
, И , если date1
в кадре данных df
идет после date2
в кадре данных df1
:
- сохранить слово, которое соответствует df1['phrase2']
Хотя я не могу понять, как это сделать. Я попытался поиграться с np.where
и соединить два условия с оператором & (например, np.where((condition1)&(condition2),'something','somethingelse'
), но это продолжает отталкивать меня от сложности. Пожалуйста, помогите ..
Ожидаемый результат:
df1
id phrase2 date2
0 abc12 cat nip 2003-03-04
1 def34 baobab tree 2009-05-02
2 ghi56 lazy 2011-08-27
3 jkl78 poor 2014-08-27
4 mno90 fat cat 2008-08-27
#occurrences of dog and snail are gone because date1 dates came before date2 dates
#for those particular words.