前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pandas基础:查找与输入最接近的值

Pandas基础:查找与输入最接近的值

作者头像
fanjy
发布2022-06-04 09:39:49
3.7K0
发布2022-06-04 09:39:49
举报
文章被收录于专栏:完美Excel完美Excel

标签:Python,Pandas

本文介绍在pandas中如何找到与给定输入最接近的值。

有时候,我们试图使用一个值筛选数据框架,但是这个值不存在,这样我们会接收到一个空的数据框架,这不是我们想要的。我们想要的是,在数据框架中找到与这个输入值最接近的值。

下面是一个简单的数据集,将用于演示这项技术。假设有5天的SPY股票(假想)价格。

图1

假设我们想要找到与价格386最接近的值所在的行。通过观察,我们注意到有两个值与386接近,即390和380。显然,390比380更接近于386。

在这种情况下,我们不能使用大于“>”或小于“<”之类的筛选器,因为不知道匹配值是高于还是低于给定的输入值386。

过程

1.计算每个值与输入值之差。

2.使用差的绝对值,以帮助排名,因为可能有正数和负数。

3.对上述第2步的结果进行排序,绝对差值最小的记录就是最接近输入值的记录。

下面显示了上述第2步的结果:

图2

接下来,可以对数据框架使用sort_values(),然后找到第一个(最低值的)条目。然而,有更好的方法。

pandas argsort()方法

argsort()方法返回将对值进行排序的整数索引。例如:

图3

看起来可能有点混乱,尤其是当看带有日期栏的排名时。

1.在右侧,原始数据框架(或绝对差数据框架,因为它们的索引相同)有一个数字索引0,1,2,3,4。

2.在左侧,忽略索引/日期列,argsort()按顺序返回数字索引

3.如果将此顺序应用于原始数据框架,正如下面几行所示,那么我们可以对数据框架进行排序:

值4(2022-05-08)行应该转到第一个位置

值6(2022-05-10)行应该转到第二个位置

……

值64(2022-05-11)行应该转到最后一个位置

图4

然后,可以使用iloc[]属性重新组织数据框架:

图5

如果我们只想要得到最接近的值,而不是整个排序的数据框架:

图6

注:本文学习整理自pythoninoffice.com,供有兴趣的朋友学习参考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档