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

时间:2018-02-21 11:23:44

标签: python pandas dataframe slice

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

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

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

    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 个答案:

答案 0 :(得分:1)

使用位修改后的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)]