return rows in a dataframe closest to a user-defined number

后端 未结 2 1969
一生所求
一生所求 2020-12-24 08:07

I have a user defined number which I want to compare to a certain column of a dataframe.

I would like to return the rows of a dataframe which contain (in a certain

相关标签:
2条回答
  • 2020-12-24 08:32

    I think you can use the argsort method:

    >>> df = pd.DataFrame({"A": 1e4*np.arange(100), "num": np.random.random(100)})
    >>> x = 0.75
    >>> df.ix[(df.num-x).abs().argsort()[:5]]
             A       num
    66  660000  0.748261
    92  920000  0.754911
    59  590000  0.764449
    27  270000  0.765633
    82  820000  0.732601
    >>> x = 0.33
    >>> df.ix[(df.num-x).abs().argsort()[:5]]
             A       num
    37  370000  0.327928
    76  760000  0.327921
    8    80000  0.326528
    17  170000  0.334702
    96  960000  0.324516
    
    0 讨论(0)
  • 2020-12-24 08:32

    Kind of new to python and pandas but I would suggest this.

    #make random df and get number
    df = pd.DataFrame({'c1':0,'c2':np.random.random(100)})
    x = .25
    #find differences and sort
    diff = df.c2.apply(lambda z: abs(x-z))
    diff.sort()
    #get the index for the 5 closest numbers
    inds = diff.index[:5]
    

    inds would then have the index locations from the original df for the 5 closest numbers. Hope this helps!

    0 讨论(0)
提交回复
热议问题