Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python在数据帧中查找与值最近的邻居_Python_Pandas_Dataframe - Fatal编程技术网

Python在数据帧中查找与值最近的邻居

Python在数据帧中查找与值最近的邻居,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个数据框或列表。我想找到与给定值最接近的值及其索引 我的代码: df = pd.DataFrame({'num':[20,24,35,38]}) val = 26 val_idx = df.iloc[(df['num']-val).abs().argsort()[:2]] 当前输出(val_idx): 预期输出(val_idx): 将熊猫作为pd导入 df=pd.DataFrame([20,35,33,24,38,43],columns=['num']) dic=df.to_dic

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

我的代码:

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

val = 26 

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

预期输出(val_idx):

将熊猫作为pd导入
df=pd.DataFrame([20,35,33,24,38,43],columns=['num'])
dic=df.to_dict()['num']
# {0: 20, 1: 35, 2: 33, 3: 24, 4: 38, 5: 43}
val=26
上限={k:v表示k,如果v>=val}
# {2: 35, 3: 77, 4: 33, 8: 38, 9: 43}
uppest_index=max(上限,键=upper.get)
# 2

lower={k:v代表k,v在dic.items()中如果v请用
df
的正确定义编辑你的帖子,我也相信你应该用
val
而不是
input
?和
val_idx
而不是
idx
?@Julien我编辑了我的q。在上面的列表中,26更接近24,35。我很惊讶你选择了20,35。不,我的意思是20。26最接近24和20,而不是2024和35。@恐怕我不明白这个问题,您是否试图找到前两个值并返回它们的索引,给定一个
val
?因为26和24之间的距离是2,26和35之间的距离是9,20和26之间的距离只有6。
    num
1   24
0   20
    num
2   35
1   24
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)