** 这个问题是在我做毕业论文期间,由于需要计算评估指标,要用到两个列表或dataframe中的两列的“你有而我没有”的数据来进行计算,所以参考了这个方法来实现。**
** 希望可以帮助到有需要的朋友解决相应的问题**
1. 列表解决方法
冲,举个例子,上代码:
recall_True = [x for x in range(10)] # 观看列表
recall_CF = [x for x in range(5,15)] # 预测列表
测试数据:
recall_True
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
recall_CF
[5, 6, 7, 8, 9, 10, 11, 12, 13, 14]
找出两列数据中相同和不同的元素
# 在观看列表而不在预测列表
False_rec = [x for x in recall_True if x not in recall_CF]
# 在预测列表而不在观看列表
False_CF = [y for y in recall_CF if y not in recall_True]
结果展示
False_rec
[0, 1, 2, 3, 4]
False_CF
[10, 11, 12, 13, 14]
2. 集合解决方法
[记于2021/12/22]
2.1 找两列数据不同的元素(差集)
理解完这个问题之后,其实就是要实现两个集合的差集,不是并集\交集;
原方法总的实例:
# 在A列表而不在B列表
InA_NotInB = list(set(A) - set(B))
# 在B列表而不在A列表
InB_NotInA = list(set(B) - set(A))
结果展示
InA_NotInB
[0, 1, 2, 3, 4]
InB_NotInA
[10, 11, 12, 13, 14]
要实现的操作本质就是集合间的差集问题,可以找出A有的,B没有的数据,反之亦成立。
2.2 找两列数据相同的元素(交集)
IntersectionSet = list(set(A) & set(B))
IntersectionSet
[5, 6, 7, 8, 9]
2.3 找两列数据全部的元素(并集)
unionSet= list(set(A) | set(B))
unionSet
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]