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

如何找出第一个DataFrame中独有的非None值(与第二个对比)

找出df1中存在但df2中不存在的非None值

问题场景

现有两个包含2列的DataFrame:

df1              df2
AAA  BBB         AAA  KKK
BBB  CCC         BBB  LLL
CCC  FFF         CCC  FFF 
DDD  None        None None 

需要找出df1中存在但df2中不存在的非None值,预期结果为DDD。

实现方法

以下是基于Pandas的两种可行方案:

方案一:集合差集法

先提取两个DataFrame的所有非None值并转为集合,再通过集合的差集操作直接得到结果:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df1 = pd.DataFrame({'AAA': ['AAA', 'BBB', 'CCC', 'DDD'], 'BBB': ['BBB', 'CCC', 'FFF', np.nan]})
df2 = pd.DataFrame({'AAA': ['AAA', 'BBB', 'CCC', np.nan], 'KKK': ['KKK', 'LLL', 'FFF', np.nan]})

# 提取非None值并转集合
df1_non_null = set(df1.stack().dropna())
df2_non_null = set(df2.stack().dropna())

# 计算差集并输出
result = df1_non_null - df2_non_null
print(list(result)[0])  # 输出: DDD

方案二:isin筛选法

将DataFrame转为一维Series后,用isin判断元素是否存在于df2的非None值中,再筛选出不符合条件的元素:

import pandas as pd
import numpy as np

# 构造示例DataFrame
df1 = pd.DataFrame({'AAA': ['AAA', 'BBB', 'CCC', 'DDD'], 'BBB': ['BBB', 'CCC', 'FFF', np.nan]})
df2 = pd.DataFrame({'AAA': ['AAA', 'BBB', 'CCC', np.nan], 'KKK': ['KKK', 'LLL', 'FFF', np.nan]})

# 提取所有非None值的一维序列
df1_flat = df1.stack().dropna()
df2_flat = df2.stack().dropna()

# 筛选出不在df2中的元素
unique_values = df1_flat[~df1_flat.isin(df2_flat)].unique()
print(unique_values[0])  # 输出: DDD

代码说明

  • stack():将二维DataFrame转为一维Series,统一处理所有列的元素
  • dropna():过滤掉所有None/NaN类型的空值
  • 集合差集/isin操作:高效判断元素的存在性,快速定位目标值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 01:25:22