You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查找Pandas DataFrame列与字符串列表的差异值

对比DataFrame列与字符串列表找差异值的实现方法

你可以根据后续使用场景选下面两种常用方案,都能得到你预期的{'Fakestate'}结果:

  • 方案1:集合差集计算(最简洁,适合快速拿差异值)
    集合原生支持差集运算,直接把两个对象转成集合做减法即可,如果你只需要找DataFrame列中存在、但标准列表里不存在的异常值,代码如下:
# 提取DF列独有值
diff = set(flights_df['ORIGINSTATENAME']) - set(states)
print(diff) # 输出 {'Fakestate'}

如果你需要找双向差异——也就是两边各自独有的值都列出来(不管是DF里多了还是列表里多了),直接用对称差集方法:

# 提取两边所有非共有值
all_diff = set(flights_df['ORIGINSTATENAME']).symmetric_difference(set(states))

你当前的测试数据里states列表没有额外的独有值,所以运行结果和上面的差集结果一致。

  • 方案2:pandas原生isin方法(适合数据清洗场景)
    如果你拿到差异值之后还要定位DataFrame里的异常行做修正,直接用isin配合取反操作,既能拿到差异值,也能保留异常行的索引:
# 筛选出州名不在标准列表里的所有行
invalid_mask = ~flights_df['ORIGINSTATENAME'].isin(states)
invalid_rows = flights_df[invalid_mask]
# 提取差异值
diff = set(invalid_rows['ORIGINSTATENAME'])

注意:如果你的DataFrame该列存在空值,空值会被判定为不在states列表中,会被计入差异结果,清洗前可以先根据业务需求决定是否提前填充或删除空值。

内容的提问来源于stack exchange,提问作者Michael Amos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:42:25