如何在Pandas DataFrame中查看不同行之间的缺失元素?
Pandas行间字符串元素缺失对比实现方案
实现思路
核心是利用集合的差集特性快速定位两个字符串集合的差异:先把每行的逗号分隔字符串拆分成元素集合,再通过集合运算得到彼此缺失的元素,最后转成列表输出即可。
完整代码实现
import pandas as pd # 初始化目标DataFrame df = pd.DataFrame({"col1": ['A', 'B'], "col2":['x,yg,z', 'gf,ui,x']}) # 提取A、B对应的字符串并拆分为元素列表 a_elements = df.loc[df['col1'] == 'A', 'col2'].iloc[0].split(',') b_elements = df.loc[df['col1'] == 'B', 'col2'].iloc[0].split(',') # 转换为集合以利用差集运算 set_a = set(a_elements) set_b = set(b_elements) # 计算彼此缺失的元素 present_in_A_and_missing_in_B = list(set_a - set_b) present_in_B_and_missing_in_A = list(set_b - set_a) # 按需求格式输出结果 print("present_in_A_and_missing_in_B ") print(present_in_A_and_missing_in_B) print("\npresent_in_B_and_missing_in_A ") print(present_in_B_and_missing_in_A)
代码说明
- 用
loc精准定位到A、B对应的行,提取col2字段后用split(',')拆分出单个元素 - 集合的差集操作(
-)能直接筛选出「存在于当前集合但不存在于对比集合」的元素,效率远高于循环遍历 - 最后将差集结果转回列表,按要求格式打印即可
运行结果
present_in_A_and_missing_in_B ['yg', 'z'] present_in_B_and_missing_in_A ['gf', 'ui']
内容的提问来源于stack exchange,提问作者navee pp
相关产品推荐
相关产品推荐

