python - 查找最接近输入的行值
问题描述
我正在努力解决这个问题。我有一个看起来像这样的熊猫数组
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 数据框中,所以它不起作用。
谢谢,R
解决方案
减去值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 的位置numpy.argmin
和选择解决方案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 - 当我尝试对 Google Play 商店应用程序数据框使用应用功能时出现错误 - ''int' 对象没有属性 'endswith'”
- web-services - 什么是回归测试及其在 Web 开发中的自动化?
- javascript - 如何根据 props 更改 react-admin 组件中一行的背景颜色?
- php - 如何在 scrutinizer-ci 上安装 php-zip 扩展?
- c++ - 使用内存映射文件在 C++ 中解析二进制文件太慢
- mysql - Codeigniter 中的每周查询计数
- c# - 如何使用 webview2 发布数据
- sql - 尝试创建一个计算总数百分比的新列。例如:'count_checked' / '总计'
- javascript - 使用 d3 的一般更新模式,用于矩形直方图
- wordpress - 使用 Wordpress 入队、注册和加载 CSS 和 JavaScript