【发布时间】:2022-01-06 09:44:57
【问题描述】:
我有以下两个数据框,想找到它们的交集。
df1 = pd.DataFrame({"0": [1524, 8788, 9899, 27172],
"1": [1333, 4476, 78783, 90832],
"2": [2021, 2022, 34522, 38479]})
print(df1)
0 1 2
0 1524 1333 2021
1 8788 4476 2022
2 9899 78783 34522
3 27172 90832 38479
df2 是一列“0”的列表类型,如下所示:
0
[1123, 2021, 1333, 6636],
[1245, 2022, 4477, 0],
[1524, 2023, 1, 27172],
[2021, 2023, 90832, 38479]
预期输出应该是df1和df2的交集,例如:
df3 = [2021, 1333],
[2022],
[0],
[90832, 38479]
到目前为止,我所阅读的内容与查找单个列表的交集有关,而不是针对具有不同数据类型的两个数据框。我的最终目标是计算 precision 即 intersection of df1 and df2 divide by the total number of my recommendations from df1 ,即 3。
以下来自 cmets 的补充说明:
这些行是对齐的,并将成对比较。
df3 中的[0] 不会出现在任何地方,但可以在交点为 0 的情况下工作。
【问题讨论】:
-
两个数据帧之间的行是否对齐?比较 0 -> 0、1 -> 1 等?
-
为什么
[0]在df3中?df1中没有出现零。 -
是的,行已对齐。没错,我想逐行比较。
-
True @hilberts_drinking_problem 我在那里加了零,如果交集是 0,它肯定可以用其他替代品来表示
-
@SquidGame 我认为空列表
[]更适合这个例子。
标签: python pandas list dataframe intersection