给定值的最近值

时间:2016-06-13 16:42:52

标签: python numpy pandas

鉴于此熊猫系列。

x = pd.Series([5, 10])

我使用searchsorted和循环来查找循环数字的最接近值X.

for X in xrange(1, 11):
    print X, x.searchsorted(X)

返回什么。

1 [0]
2 [0]
3 [0]
4 [0]
5 [0]
6 [1]
7 [1]
8 [1]
9 [1]
10 [1]

我想要实现的目标是让6和7返回[0]因为这些数字接近5而不是10。

1 个答案:

答案 0 :(得分:4)

除了.searchsorted(),您还可以检查index值的pd.Series,以最大限度地减少与相关值的absolute差异:

import numpy as np
for X in range(1, 11):
    print(X, (np.abs(x - X)).argmin())

1 0
2 0
3 0
4 0
5 0
6 0
7 0
8 1
9 1
10 1