Python:如何在前 10 个值的列表中找到最大值?

标签 python pandas csv max

我有一个csv file包含波浪数据(时间、潮汐高度、波浪周期、波浪高度和波浪方向) 我想知道,在给定时间,上一次高潮是什么时候以及相应的波浪周期、高度和方向。

enter image description here

我现在有这个代码,它选择我正在查找的时间行:

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/

相关文章:

python - SQLAlchemy:不同数据库之间的联接并在模块中使用不同文件

pandas - 在 pandas 中为 groupby 创建序列模式

java - 如何解析带有引号中的某些项目的逗号分隔行(CSV)?

python - 在 Pandas 中按列名选择两组列

linux - 显示.im6 : no decode delegate for this image format `/tmp/magick-KFcbfWUi'

python - 在 pandas 中读取 csv 文件时出错[CParserError : Error tokenizing data. C 错误 : Buffer overflow caught - possible malformed input file.]

python - 如何使用 django 在项目内仅迁移一个应用程序

python - 线性判别分析变换函数

python多处理模块: strange behaviour and processor load when using Pool

python - 遍历 pandas 列以生成直方图的最佳方法是什么?