Python 基于最接近的值选择行

Python 基于最接近的值选择行,python,Python,我有一个数据帧无线电探空仪,其中包含大量无线电探空仪数据。现在有数百个无线电探空仪正在进行,所有探空仪都有一个唯一的时间戳,因此数据帧有一个datetimeindex。我想要的是基于某个压力水平的变量(温度、压力等)的时间序列。所以基本上每个探空仪都应该给出某个压力水平下其他变量的值。出现的问题是,压力间隔不是均匀的,并且以2位小数表示。此外,每个探空仪都有不同的压力间隔,因为测量是每秒进行的,而不是基于压力。我所做的是: x = radiosondes[(radiosondes['Press'

我有一个数据帧
无线电探空仪
,其中包含大量无线电探空仪数据。现在有数百个无线电探空仪正在进行,所有探空仪都有一个唯一的时间戳,因此数据帧有一个datetimeindex。我想要的是基于某个压力水平的变量(温度、压力等)的时间序列。所以基本上每个探空仪都应该给出某个压力水平下其他变量的值。出现的问题是,压力间隔不是均匀的,并且以2位小数表示。此外,每个探空仪都有不同的压力间隔,因为测量是每秒进行的,而不是基于压力。我所做的是:

x = radiosondes[(radiosondes['Press'] >= 500) & (radiosondes['Press'] <= 501)]
所以我想要的是,在新的时间序列中,每个无线电探空仪只包含一次。我想选择压力也最接近的行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。

初始操作后,请执行以下操作:

x.sort_values('Press').drop_duplicates('date').sort_index()

之后,您可能需要根据时间戳对数据帧进行重新排序,这很简单。

您能自己演示一下解决这一问题的方法吗?还可以使用数据帧对象提供输入数据,以便我们可以复制它吗?
x.sort_values('Press').drop_duplicates('date').sort_index()