首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:从离另一个数据集最近的点的集合邻域查找max值,第一个df非常大。

Python:从离另一个数据集最近的点的集合邻域查找max值,第一个df非常大。
EN

Stack Overflow用户
提问于 2022-05-01 15:27:20
回答 1查看 35关注 0票数 0

我有两列df1df2

df1有两列。我想从idx找到row的索引df1,它在col1中包含了与df2 col1值的最小距离。

接下来,我想从df1 col2中找到neighborhood [idx-10, idx+10]的最大值。然后将该值附加到df2,并将其附加到找到最小距离的相应行。

下面是这两列的一个示例:

代码语言:javascript
复制
df1 = pd.DataFrame({"A": [1,1.5,2.5,3,3.5,3.95,4.55],
                    "B": [0.25, 0.6, 1.34, 0.75, 0.16, 1.04, 0.99]})
      A     B
0  1.00  0.25
1  1.50  0.60
2  2.50  1.34
3  3.00  0.75
4  3.50  0.16
5  3.95  1.04
6  4.55  0.99


 df2 = pd.DataFrame({"A1": [1.06,2.34, 3.70],
                     "C": ["pink", "blue", "orange"]})  

  A1       C
0  1.06    pink
1  2.34    blue
2  3.70  orange

以下是预期的结果:

代码语言:javascript
复制
df3 = pd.DataFrame({"A1":[1.06,2.34, 3.70],
                    "B": [0.25, 0.6, 1.04],
                    "C": ["pink", "blue", "orange"] })


  A1     B       C
0  1.06  0.25    pink
1  2.34  0.60    blue
2  3.70  1.04  orange

我知道我可以合并这些数据帧,但问题是其中一个df1非常大,所以要计算AA1列的所有可能距离需要大量的内存。所以,也许还有比这更有效率的东西?我知道这个例子并不准确,因为结果数据帧的列B包含的值与A中的A[i]-A1[j] = min|A[i]-A1[j]|行完全匹配,

然而,我需要B值作为B在A= [A[i]-5, A[i]+5]行中的最大值。

EN

回答 1

Stack Overflow用户

发布于 2022-05-01 15:45:00

提供的输出的逻辑是完全清楚的,但是如果要合并A/A1中最近的值,请使用pandas.merge_asof

代码语言:javascript
复制
df3 = pd.merge_asof(df2, df1.rename(columns={'A': 'A1'}),
                    on='A1', direction='nearest')

idx±10上的条件也不清楚,但如果要设置最大距离,请使用tolerance=10

产出:

代码语言:javascript
复制
     A1       C     B
0  1.06    pink  0.25
1  2.34    blue  1.34
2  3.70  orange  0.16
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72078071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档