【发布时间】:2021-07-05 15:12:25
【问题描述】:
我有两个数据框,它们都包含 3 个值 df1(X,Y,Z), df2(A,B,C) 我希望创建一个新的数据框 df3,其中包含提取所有最接近的匹配df1 中每一行的 df2 中的组件;即对于 df1 中的每一行,返回 df2 中 A 到 X、B 到 Y、C 到 Z 最接近匹配的行。
类似于How do I find the closest values in a Pandas series to an input number?,但是这个问题只寻求基于单个值返回最近的行,而我试图返回所有三个列最近匹配的行返回并针对 df1 中的 每一行 迭代该过程,而不是单个值。
输入
df1
Index A B C
1 2 4 6
2 0.8 7 9
df2
Index X Y Z
1 11 3 4.5
2 2.2 4.4 5.8
3 1 6.8 9.3
4 1.3 10 9.5
输出
df3
Index X Y Z
2 0.32 0.11 0.4
3 1 6.8 9.3
【问题讨论】:
-
解决方案的效率应该如何/我们在谈论多少数据?一种方法可能是创建另一个具有差异的列并选择与此新列相关的 argmin。这对你有用吗?
-
@André 那是我应该提到的好点,我的示例中的一些 df2 数据帧将高达 300 万行。我相信您的建议与下面 Michael O 的回答类似 - 我不确定这会有多有效,但会试一试。谢谢。
-
我已经编辑了我的答案以获得想要的结果。