如何在Python中比对多个列表并生成元素归属关系的DataFrame
实现代码
直接运行以下代码即可得到符合要求的DataFrame:
import pandas as pd # 原始列表 list1 = [399826, 399827, 413350, 404450, 399827, 404451] list2 = [399825, 399826, 412450, 403650, 391227] list3 = [412450, 399827] list4 = [399829, 399246, 513350, 404370, 789827, 439931, 404451] # 预转集合,大幅提升存在性判断速度,数据量越大优势越明显 set1, set2, set3, set4 = set(list1), set(list2), set(list3), set(list4) # 提取所有列表的去重合并值,用sorted可实现数值从小到大排序 all_unique = sorted(set(list1 + list2 + list3 + list4)) # 生成目标DataFrame df = pd.DataFrame({ "numbers": all_unique, "list1": [x in set1 for x in all_unique], "list2": [x in set2 for x in all_unique], "list3": [x in set3 for x in all_unique], "list4": [x in set4 for x in all_unique] })
补充说明
你编写的returnNotMatches函数用于计算两个列表的差集,仅在你需要提取仅在某个列表中存在的特殊值时使用,生成上述布尔比对表不需要调用该函数。
内容的提问来源于stack exchange,提问作者V.Nouri
相关产品推荐
相关产品推荐

