我有一个csv file包含波浪数据(时间、潮汐高度、波浪周期、波浪高度和波浪方向) 我想知道,在给定时间,上一次高潮是什么时候以及相应的波浪周期、高度和方向。
我现在有这个代码,它选择我正在查找的时间行:
import csv
with open ('Waves_2019.csv') as f:
reader = csv.reader (f)
for line_num, content in enumerate(reader):
if content [0] == '01/03/2019T08:00':
a = line_num
print (a)
下一步将利用前 12 小时的数据来选择最高潮汐高度(例如 01/03/2019T01:00 处的 0.77),然后返回其他数据(周期、高度、方向)。
如何修改代码,使其根据所选时间的前 12 个数据点在第 2 列中查找最大潮汐高程?然后在高潮期间返回其他数据?
最佳答案
首先我们选择需要检查的日期的索引
selected_index = df.loc[df["time"].eq("01/03/2019T08:00")].index[0]
然后获取前 12 小时内具有最大 tidal_elevation
的 id 值(由于数据集中没有缺失行,因此我们可以放心地假设前 12 个索引表示 12 小时)
filt = df.loc[selected_index-12: selected_index, "tidal_elevation"].idxmax()
现在,我们为具有最大tidal_elevation
的索引选择其他参数
res = df.loc[filt, ["time", "tidal_elevation", "wave_period", "wave_height", "wave_direction"]]
print(res)
附注res = df.loc[filt, "time":"wave_direction"]
如果列的时间顺序相同,即顺序相同[“time”,“tidal_elevation”,“wave_period”,“wave_height”,“wave_direction”]
编辑:
取最大 tidal_elevation
res_avg = df.loc[filt-1:filt+1, "time":"wave_direction"].mean()
print(res_avg)
关于Python:如何在前 10 个值的列表中找到最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60279477/