python-给定值的最近值

鉴于此 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],因为这些数字比10更接近5.

最佳答案

除了.searchsorted()之外,您还可以检查pd.Series值的索引,以最大程度地减少与所述值的绝对差异:

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