我有以下格式的数据框:
Column 1 (Expected Output) | Column 2 (Actual Output)
[2,10,5,266,8] | [7,2,9,266]
[4,89,34,453] | [4,22,34,453]
我想找到实际输入中预期的项目数。例如,对于第1行,预期输出和实际输出中只有2和266,这意味着精度= 2/5且召回= 2/5。
由于我有超过500行,我想找到某种公式来查找每行的精度和召回率。
答案 0 :(得分:1)
像这样设置你的df:
df = pd.DataFrame({"Col1": [[2,10,5,266,8],[4,89,34,453]],
"Col2":[[7,2,9,266],[4,22,34,453]]})
您可以在以下位置找到匹配的值:
df["matches"] = [set(df.loc[r, "Col1"]) & set(df.loc[r, "Col2"]) for r in range(len(df))]
您可以从中计算精确度和召回率。
但请注意,您的示例不会考虑预期输出和实际输出列表中元素的排序,如果这很重要,此解决方案将会失效,并且如果“...”中存在重复的任何值的重复项预期产出“清单。