gpt4 book ai didi

python - 查找值最接近给定数字的行

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:31 24 4
gpt4 key购买 nike

我有下面的数据框,我将其称为“df”:

idx      value
---- -----
0 1
1 1
2 1
3 0
4 2
5 3
6 4
7 4
8 5
9 6

例如,我的值是:

my_value = 1

我的目标是让所有最接近 my_value 的行在 df[value] - my_value 之间具有最小的绝对差异。

在这种情况下,例如,我有三行匹配,它们是:

idx        value
----- -------
0 1
1 1
2 1

这三行具有相同的绝对差为零,是我要获取的行。

我一直在研究这样的一些功能:

df_result = df.iloc[(df['values'].sub(value)).abs().idxmin()]

但我找到的所有解决方案都只给出了指示的行数,并且在重复值的情况下失败。

例如,上面的代码只返回第一行的索引 0 而不是包含值 1 的三个索引。

最佳答案

您可以按如下方式进行:

query=1
# create a series with the absolute difference to your query value
ser_abs_diff= (df['value']-query).abs()

# extract the minimum
min_val= ser_abs_diff.min()

# apply it to your dataframe
df[ser_abs_diff==min_val]

使用以下测试数据(注意,我将第 5 行的值更改为第 7 行以使其更有趣):

df= pd.DataFrame(dict(value=[1, 1, 1, 0, 2, 7, 4, 4, 5, 6]))

你得到:

# with query=1
Out[82]:
value
idx
0 1
1 1
2 1

# with query=3
Out[83]:
value
idx
4 2
6 4
7 4

关于python - 查找值最接近给定数字的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57542096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com