【问题标题】:How to compare two rows in pandas/ python if they overlap如果它们重叠,如何比较熊猫/ python中的两行
【发布时间】:2020-05-21 16:38:29
【问题描述】:

我有如下数据框

     product        model   ci_low      ci_upp  

        A             X    0.041667    48.0 

        A             Y    0.000000    21.0 

我想检查 ci_low 和 ci_upp 是否按产品重叠并返回类似

 product       CI Band X        CI Band Y         Overlap

       A      [0.041667-48.0]   [0.00000 - 21.0]    Yes

注意:我有检查范围是否重叠的功能,如果返回 0 则它们不重叠

    def getOverlap(a, b):
          return max(0, min(a[1], b[1]) - max(a[0], b[0]))

【问题讨论】:

    标签: python pandas compare


    【解决方案1】:

    首先我们需要pivot 并创建范围索引,然后使用overlap 查找交集

    df['Ci band']=pd.IntervalIndex.from_arrays(df.ci_low,df.ci_upp,closed='both')
    s=df.pivot('product','model','Ci band').add_prefix('CI Band')
    s['Overlap']=s.apply(lambda x : x['CI BandX'].overlaps(x['CI BandY']),axis=1)
    s
    Out[55]: 
    model            CI BandX     CI BandY  Overlap
    product                                        
    A        [0.041667, 48.0]  [0.0, 21.0]     True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 2019-12-07
      • 1970-01-01
      • 1970-01-01
      • 2021-12-09
      相关资源
      最近更新 更多