Сравнение 2 столбцов данных с 2 значениями массива в одной строке - PullRequest
0 голосов
/ 10 мая 2019

У меня есть датафрейм.Содержит df['article_id'] и df['user_id'].У меня также есть массив Numpy (или список. Я подумал, что массив np будет быстрее для этого).Который содержит article_id и user_id.Смысл в том, чтобы сравнить df с массивом np, чтобы я мог отфильтровать повторяющиеся записи.И user_id, и article_id должны быть одинаковыми.Идея такова:

if df['article_id'] == nparray[:,0] & df['user_id'] == nparray[:,1]:
    remove the row from the dataframe

Вот как выглядит список df & np.array / (на данный момент есть только 1 user_id, но будет больше позже).Таким образом, если массив np.array содержит те же значения из фрейма данных, строки фрейма данных должны быть удалены .:

array([[1127087222,          1],
       [1202623831,          1],
       [1747352473,          1],
       [1748645480,          1],
       [1759957596,          1],
       [1811054956,          1]])

    user_id article_id  date_saved
0   1   2579244390  2019-05-09 10:46:23
1   1   2580336884  2019-05-09 10:46:22
2   1   1202623831  2019-05-09 10:46:20
3   1   2450784233  2019-01-11 12:36:44
4   1   1747352473  2019-01-03 21:38:34

Желаемый вывод:

    user_id article_id  date_saved
0   1   2579244390  2019-05-09 10:46:23
1   1   2580336884  2019-05-09 10:46:22
3   1   2450784233  2019-01-11 12:36:44

Как этого добиться?

1 Ответ

1 голос
/ 10 мая 2019

После вашего уточнения. Вы можете достичь желаемого результата, используя np.isin и отрицая оператор '~' следующим образом:

df[~np.isin(df[['user_id', 'article_id']], nparray)]

Out[17]:
   user_id  article_id           date_saved
0        1  2579244390  2019-05-09 10:46:23
1        1  2580336884  2019-05-09 10:46:22
3        1  2450784233  2019-01-11 12:36:44
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...