python - 根据最接近的值选择行

标签 python

我有一个数据框 radio 探空仪,其中包含大量 radio 探空仪数据。现在正在完成数百个 radio 探空仪,所有 radio 探空仪都具有唯一的时间戳,因此数据帧具有日期时间索引。我想要的是基于特定压力水平的变量(温度、压力等)的时间序列。因此,基本上每个 radio 探空仪都应该为我提供特定压力水平下其他变量的值。出现的问题是压力区间不均匀,并且以 2 位小数表示。此外,每个 radio 探空仪都有不同的压力间隔,因为测量是每秒进行一次,而不是基于压力。我所做的如下:

x = radiosondes[(radiosondes['Press'] >= 500) & (radiosondes['Press'] <= 501)]

现在这条线给了我一些正确的数据,但并不完全像你在下面的结果中看到的那样:一些时间戳被多次包含,因为它们有多个测量值,其中压力在 500 到 501 HPa 之间。

                  Press  GeopHgt   Temp  RH  PO3  GPSHgt  O3
datetime                                                        
2019-09-21 05:00:00  500.86     5263  237.4  79  NaN  5279.0 NaN
2019-09-21 05:00:00  500.49     5268  237.4  78  NaN  5285.0 NaN
2019-09-21 05:00:00  500.12     5273  237.3  76  NaN  5290.0 NaN
2019-09-22 04:00:00  500.64     5359  243.5  54  NaN  5369.0 NaN
2019-09-22 04:00:00  500.14     5368  243.4  54  NaN  5378.0 NaN
...                     ...      ...    ...  ..  ...     ...  ..
2020-10-01 11:00:00  500.68     5443  244.6  63  NaN  5460.0 NaN
2020-10-01 11:00:00  500.29     5449  244.6  63  NaN  5466.0 NaN
2020-10-01 14:00:00  500.92     5465  245.1  29  NaN  5485.0 NaN
2020-10-01 14:00:00  500.55     5469  245.1  29  NaN  5490.0 NaN
2020-10-01 14:00:00  500.16     5474  245.1  28  NaN  5496.0 NaN

所以我想要的是每个 radio 探空仪在新时间序列中只包含一次。我想选择压力最接近 500 的行。因此结果将类似于:

                          Press  GeopHgt   Temp  RH  PO3  GPSHgt  O3
datetime                                                        
2019-09-21 05:00:00  500.12     5273  237.3  76  NaN  5290.0 NaN
2019-09-22 04:00:00  500.14     5368  243.4  54  NaN  5378.0 NaN
...                     ...      ...    ...  ..  ...     ...  ..
2020-10-01 11:00:00  500.29     5449  244.6  63  NaN  5466.0 NaN
2020-10-01 14:00:00  500.16     5474  245.1  28  NaN  5496.0 NaN

希望大家能清楚我的意思。预先非常感谢!

最佳答案

要实现此目的,您可以执行以下操作: 如果你的数据框是x, 考虑到您寻找尽可能接近 500 的压力,因此它等于 500 到 501 之间的最小压力:

print(x.loc[x.groupby("datetime")["Press"].idxmin()])

这将为每个日期时间组保留一行,压力最小,因此最接近 500。

关于python - 根据最接近的值选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66369492/

相关文章:

python - 为什么numpy.core.numeric._typelessdata中有两个np.int64(为什么numpy.int64不是numpy.int64?)

python - 如何使用opencv将鱼眼相机拍摄的图像转换为平面(矩形)图像?

python - 如何在不删除重复项的情况下找到最常用的单词?

Python:根据键的值在数组中查找字典

python - 我的 'lowest common multiple' 程序挂起,没有输出答案

python - 将 nosetests 称为 scons 任务。

python - 将不可搜索的类文件对象流式传输到多个接收器

python - 使用换行符查找字符串的其余部分 Python

python - 什么时候应该在 Python 函数名称中的单词之间使用下划线(根据样式指南)?

python - 使用 Python 分析音频文件