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()