我有以下两个dataframe:
DF1
a1 b1 x y
0 id1 1200.00 Meat Client1
1 id2 240.20 Dairy Client1
2 id3 -298.00 Veg Client1
3 id4 10000.13 Fruit Client3
4 id1 -569.13 Meat Client2
5 id3 1000.00 Veg Client5
6 id2 0.00 Dairy Client1
7 id2 -32.00 Fruit Client3
DF2
a2 b2 Category
0 id1 1200.0013 1
1 id2 -32.0115 4
2 id3 -298.0003 3
3 id4 10000.1300 4
我想用以下方法过滤df1
1.列a1中的值来自df2中的列a2,以及
1.列b1,其中的值来自df2中的列b2(近似值,因为可能出现舍入误差)
这是我正在寻找的输出:
DF3
a2 b2 x y
0 id1 1200.00 Meat Client1
1 id2 -32.00 Fruit Client3
2 id3 -298.00 Veg Client1
3 id4 10000.13 Fruit Client3
请指示。
3条答案
按热度按时间qmelpv7a1#
可以使用
merge_asof
:输出:
acruukt92#
这可以通过合并来完成,并且您可以使用舍入而不修改原始数据以获得近似匹配。
编辑
到目前为止,我对这里介绍的所有方法进行了一个小的速度测试。他们都很接近,正如人们所料。
3.16 ms ± 696 µs/循环(平均值±标准运行7次,每次循环100次)
3.65 ms ± 1.07 ms/循环(平均值±标准差)运行7次,每次循环100次)
3.23 ms ± 427 µs/循环(平均值±标准值运行7次,每次循环100次)
l0oc07j23#
这里有一个选项,它在合并之前对值进行四舍五入。
输出: