返回最接近用户定义数字的数据框中的行

Mic*_*lly 17 python python-2.7 pandas

我有一个用户定义的数字,我想与数据帧的某一列进行比较.

我想返回一个数据帧的行,它包含(在df的某一列中,比如df.num)与给定数字x最接近的5个数字.

任何关于没有循环的最佳方法的建议将非常感激.

DSM*_*DSM 25

我想你可以使用这个argsort方法:

>>> 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
Run Code Online (Sandbox Code Playgroud)

  • 大熊猫界面有变化吗?我需要使用`df.iloc`而不是`df.ix`,否则字段都是`NaN`. (2认同)