我正在我的 DataFrame 中创建一个指示列来表示不同列的值是否在列表中。
我的第一次尝试使用了基本的 python "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() 方法比“==”更快的答案并没有真正解释它。
茅侃侃
相关分类