如何不按值而是按值范围合并两个数据框? - python

数据框A:

pd.Dataframe({
    'price': [50, 150, 250], 
    'group':[2, 5, 10]
})

数据框B:

pd.Dataframe({
    'low_price': [0, 100, 200], 
    'high_price': [99, 199, 299],
    'low_group':[0, 4, 8],
    'high_group':[3, 6, 12],
    'something':['A', 'B', 'C']
})

如何在以下条件下合并这些数据框:
-数据框A的价格介于数据框B的低价和高价之间。

-数据框A的组介于数据框B的低组和高组之间。

有没有一种方法可以在不遍历行并一个接一个地检查的情况下执行此操作?我已经这样做了,它的成本为O(n ^ 2),不可伸缩。

编辑:

PS1:A中的每一行在B中具有0或1个匹配项。我正在寻找“内部”合并。

PS2:A有数百万条记录,B有数百条记录。

参考方案

如果您的数据已经排序,则可以实现某种二进制搜索来查找数据分区的位置(假设合并过程所花的时间不超过O(log n),则可以将其降至O(log n) n))。

如果未对数据进行排序,则最好的办法是O(n),并在发现合并候选者的同时进行合并。

Python:如何根据另一列元素明智地查找一列中的空单元格计数? - python

df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

如何将熊猫数据框合并到现有的reportlab表中? - python

example_df = [[1,2,3,4,5],[1,2,3,4,5],[1,2,3,4,5]] 我想将example_df pandas数据框集成到现有的Reportlab表中-行数正在变化(如示例中所示,可以是3,也可以是20):rlab_table(['Mean','Max','Min',…