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

如何用Python获取三元韦恩图166黄色区域的实际数据?

筛选三元韦恩图中独有的数据(以dfA独有的黄色区域为例)

假设你的三个DataFrame都有一个用来匹配的主键列(比如id、user_id这类唯一标识列),要找出仅在dfA中存在、同时不在dfB和dfC里的数据,按以下步骤来:

  • 第一步:先把dfA和dfB做左连接,筛选出dfA中没有在dfB里匹配到的行
  • 第二步:把第一步的结果再和dfC做左连接,筛选出没有在dfC里匹配到的行,最终得到的就是仅属于dfA的数据集(对应你图里的166黄色区域)

具体代码示例(以user_id作为匹配列):

# 筛选dfA中不在dfB的数据
a_excl_b = dfA.merge(dfB, on='user_id', how='left', indicator=True)
a_excl_b = a_excl_b[a_excl_b['_merge'] == 'left_only'].drop(columns='_merge')

# 从上面的结果中再排除dfC的数据,得到仅属于A的部分
only_a = a_excl_b.merge(dfC, on='user_id', how='left', indicator=True)
only_a = only_a[only_a['_merge'] == 'left_only'].drop(columns='_merge')

# 验证数量是否为166
print(len(only_a))

如果你的黄色区域是其他独有的部分(比如仅属于dfB或dfC),只需要替换对应的DataFrame即可,逻辑完全一致。

要是你想找三个DataFrame的共同交集(韦恩图中间的重叠区域),用三次inner连接就行:

common_data = dfA.merge(dfB, on='user_id').merge(dfC, on='user_id')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:29:51