Я делаю столбец индикатора в моем DataFrame, чтобы показать, есть ли значение другого столбца в списке.
Моя первая попытка использовала базовый питон в операторе «in», и мой индикатор выполнения показал, что это будетзанять 83 часа, чтобы бежать.Затем я попытался использовать панд ".isin ()", и это заняло менее одной секунды.Мой DataFrame содержит около 40 000 000 строк, а список, в котором я ищу, содержит около 100 000 элементов.Список уже отфильтрован для удаления повторяющихся элементов (lst = list (set (original_list))).Элементы, которые я сравниваю, представляют собой строки длиной около 20 символов.
Вот моя первая попытка (это заняло бы 83 часа):
df['indicator']=df['col1'].progress_apply(lambda x: 1 if x in lst else 0)
Вот моя вторая попытка (которая заняламенее одной секунды):
df['indicator']=df['col1'].isin(tqdm(lst))
Кто-нибудь может объяснить, почему второй приводит к такому радикальному улучшению?Ответ на Почему метод Pandas .isin () быстрее, чем "==" , на самом деле не объясняет это.