首页 > 解决方案 > Python在数据框中找到与值最近的邻居

问题描述

我有一个数据框或列表。我想找到最接近给定值的值及其索引。

我的代码:

df = pd.DataFrame({'num':[20,24,35,38]})

val = 26 

val_idx = df.iloc[(df['num']-val).abs().argsort()[:2]]

当前输出(val_idx):

    num
1   24
0   20

预期输出(val_idx):

    num
2   35
1   24

标签: pythonpandasdataframe

解决方案


import numpy as np
import pandas as pd

# setup
df = pd.DataFrame({'num':[20,24,35,38]})
val = 26 

# subtract to get differences
test = np.absolute(np.subtract(val, df["num"]))

# get index
idx = np.argmin(test)
# Condition
idx = np.where(df["num"][idx] > val, [idx-1, idx], [idx, idx+1])

print(idx)

推荐阅读