代码之家  ›  专栏  ›  技术社区  ›  Krzysztof Słowiński

对于具有排序的数字索引和列的数据帧,返回与传递的给定值最接近的索引值和列名的元组

  •  1
  • Krzysztof Słowiński  · 技术社区  · 6 年前

    我正在使用具有排序数字索引和列的数据帧:

        6    9    15    22
    3   5    2     1     7
    5   0    2     9     1
    8   7    3     1     1
    

    给定索引和列名的一些值,例如(6,12),我想获得原始数据帧的切片:

        9    15
    5   2     9
    8   3     1
    

    或者索引值,因此对于(6,12)的相同示例,结果将是:

    (5, 9), (8, 15)
    

    如果输入与索引或列名匹配,则应调整返回片段,例如对于(8,12),返回片段应为:

        9    15
    8   3     1
    

    在索引结果中可以解释为:

    (8, 9), (8, 15)
    

    在索引和列名匹配的最佳情况下,例如(8,9),它应该是:

        9
    8   3 
    

    指数结果(一致性)可解释为:

    (8, 9), (8, 9)
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Krzysztof Słowiński    6 年前

    使用稍加修改的 this solution :

    def get_closest_pair(i,c,t):
        return [(i[i <= t[0]].max(),c[c <= t[1]].max()),
                (i[i >= t[0]].min(),c[c >= t[1]].min())]
    
    print (get_closest_pair(df.index, df.columns, (6,12)))
    [(5, 9), (8, 15)]
    
    print (get_closest_pair(df.index, df.columns, (8,12)))
    [(8, 9), (8, 15)]
    
    print (get_closest_pair(df.index, df.columns, (8,9)))
    [(8, 9), (8, 9)]