我有3个不同的数据帧和一组代码和类别。在这3个之间,我有效地尝试确定在数字/类别级别上存在重叠的地方。我能描述我想要的最终结果的最好方法是用一个3圈的维恩图来标记代码/类别,其中3个都匹配,只有2个重叠,并且正好在其中的1个之内。
d1 = pd.DataFrame({"num": [1,2,3,4], "cat": ["cat1", "cat2", "cat3", "cat4"]})
d2 = pd.DataFrame({"num": [3,4,5,6], "cat": ["cat1", "cat1", "cat3", "cat4"]})
d3 = pd.DataFrame({"num": [1,2,5,6], "cat": ["cat1", "cat2", "cat3", "cat4"]})所需输出:
d1/2/3: count unique to d1/2/3 only
d1 and d2 no d3: count in d1 and d2 but not in d3
d1 and d3 no d2: count in d1 and d3 but not in d2……
我想出的最好的方法是创建一个num/cat的连接列,然后分别内部连接每个数据帧并计算结果,但我希望有一种更好、更简单的方法来实现这一点。
发布于 2020-04-01 21:02:30
对于任何展望未来的人来说。我可以从这个答案中提取一些代码,并对其进行稍微的修改……
https://stackoverflow.com/questions/60955058
复制相似问题