[英]Python find closest neighbors to a value in a dataframe
I have a dataframe or list.我有一个 dataframe 或列表。 I want to find the closest values and their index to a given value.
我想找到最接近给定值的值及其索引。
My code:我的代码:
df = pd.DataFrame({'num':[20,24,35,38]})
val = 26
val_idx = df.iloc[(df['num']-val).abs().argsort()[:2]]
Present output (val_idx):目前 output (val_idx):
num
1 24
0 20
Expected output (val_idx):预期 output (val_idx):
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)
import pandas as 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
upper = {k:v for k,v in dic.items() if v >= val}
# {2: 35, 3: 77, 4: 33, 8: 38, 9: 43}
uppest_index = max(upper,key=upper.get)
# 2
lower = {k:v for k,v in dic.items() if v <= val}
# {0: 20, 1: 6, 5: 24}
lowest_index = min(lower,key=lower.get)
# 3
idx = [lowest_index, uppest_index] # [3,2]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.