gpt4 book ai didi

python-3.x - 根据另一个数据帧中的值查找 Pandas 数据帧中的区间

转载 作者:行者123 更新时间:2023-12-04 02:25:22 26 4
gpt4 key购买 nike

我有两个数据框。一个数据框 (A) 看起来像:

Name.   gender     start_coordinate    end_coordinate    ID      
Peter M 30 150 1
Hugo M 4500 6000 2
Jennie F 300 700 3
另一个数据框 (B) 看起来像
ID_sim.  position      string      
1 89 aa
4 568 bb
5 938437 cc
我想在这里完成两个任务:
  • 我想获取行的索引列表(来自数据帧 B),其中 位置列位于数据帧 A 中的区间(由 start_coordinate end_coordinate 列指定)。
    此任务的结果将是:
  • lst = [0,1]. ### because row 0 of B falls in interval of row 1 in A and row 1 of B falls in interval of row 3 of A. 

  • 我从任务中获得的索引 1 ,我想从数据帧 B 中保留它以创建一个新的数据帧。因此,新的数据框将如下所示:
  • position     string          
    89 aa
    568 bb
    我使用 .between() 来完成这个任务。代码如下:
    lst=dfB[dfB['position'].between(dfA.loc[0,'start_coordinate'],dfA.loc[len(dfA)-1,'end_coordinate'])].index.tolist()
    result=dfB[dfB.index.isin(lst)]
    result.shape
    但是,当我运行这段代码时,出现以下错误:
    KeyError: 0
    什么可能会引发此错误?我该如何解决这个问题?

    最佳答案

    我们可以试试 numpy 广播 这里

    s, e = dfA[['start_coordinate', 'end_coordinate']].to_numpy().T
    p = dfB['position'].to_numpy()[:, None]

    dfB[((p >= s) & (p <= e)).any(1)]
       ID_sim.  position string
    0 1 89 aa
    1 4 568 bb

    关于python-3.x - 根据另一个数据帧中的值查找 Pandas 数据帧中的区间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68083579/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com