gpt4 book ai didi

python - 查找与输入最接近的行

转载 作者:行者123 更新时间:2023-12-01 01:33:37 25 4
gpt4 key购买 nike

我正在为这个问题苦苦挣扎。我有一个 pandas 数组,如下所示

               delta_n    column_1   ...
0 10 10 ...
1 20 0
2 30 0

现在我有一个数字,假设我搜索 delta_n=20.5 并且我想选择最接近 delta_n 数字的行。

我的输出应该是:

1                20       0

我用 df.loc[20.5] 尝试过,但由于它不在 pd 数据框中,所以不起作用。

谢谢,

最佳答案

将值减去sub ,通过 abs 获取绝对值,通过 idxmin 查找最小值索引最后选择 loc :

idx = df['delta_n'].sub(delta_n).abs().idxmin()

#added double [[]] for one row DataFrame
df1 = df.loc[[idx]]
print (df1)
delta_n column_1
1 20 0

#output Series with one []
s = df.loc[idx]
print (s)
delta_n 20
column_1 0
Name: 1, dtype: int64

详细信息:

print (df['delta_n'].sub(delta_n))
0 -10.5
1 -0.5
2 9.5
Name: delta_n, dtype: float64

print (df['delta_n'].sub(delta_n).abs())
0 10.5
1 0.5
2 9.5
Name: delta_n, dtype: float64

print (df['delta_n'].sub(delta_n).abs().idxmin())
1

numpy.argmin 的另一个 numpy 位置解决方案并通过 iloc 选择:

pos = df['delta_n'].sub(delta_n).abs().values.argmin()
print (pos)
1

df1 = df.loc[[pos]]
print (df1)
delta_n column_1
1 20 0

s = df.loc[pos]
print (s)
delta_n 20
column_1 0
Name: 1, dtype: int64

关于python - 查找与输入最接近的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52587436/

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