关于Pandas多DataFrame连接与韦恩图匹配的疑问
多DataFrame连接匹配韦恩图的疑问解答
假设你的操作流程是:先对external和staff做inner join(得到两者的交集数据),再将这个交集结果与students做连接,答案选择了outer join。你困惑的点在于outer join会不会带出students里没和另外两个数据集重叠的数据——这得看韦恩图的具体需求:
如果韦恩图要展示的是「students的全部数据 + external和staff的交集里不在students中的数据」(也就是集合论里的 students ∪ (external ∩ staff)),那outer join完全是合理的:
- inner join
external和staff后,得到的是两个数据集共有的记录; - 再和
students做full outer join,会保留students的所有记录,同时补上external&staff交集中那些students里没有的记录,刚好匹配这类韦恩图的范围。
要是你误以为韦恩图只需要三者的交集,那确实不该用outer join,但结合答案来看,显然韦恩图的目标范围不是三者交集,而是students全集加上另外两个的交集补集。
举个实际数据例子:
students:[1,2,3,4]external:[2,3,5]staff:[3,5,6]
- 先inner join
external和staff,得到[3,5] - 再和
students做outer join,最终结果是[1,2,3,4,5]
这个结果对应的韦恩图就是students的全部区域,加上external和staff重叠但不在students里的小区域,完全符合outer join的效果。
内容的提问来源于stack exchange,提问作者freen
相关产品推荐
相关产品推荐

