使用python print max和min值以及与max和min值相关的日期

问题描述 投票:0回答:2

我是编程的新手,我正在尝试编写一个程序来评估和打印最大的AVE.SPEED值以及与csv文件中该值相关的日期。这将是文件数据集的示例:

   STATION  DATE        AVE_SPEED
0    US68   2018-03-22  0.00
1    US68   2018-03-23  0.00
2    US68   2018-03-24  0.00
3    US68   2018-03-26  0.24
4    US68   2018-03-27  2.28
5    US68   2018-03-28  0.21
6    US10   2018-03-29  0.04
7    US10   2018-03-30  0.00
8    US10   2018-03-31  0.00
9    US10   2018-04-01  0.00
10   US10   2018-04-02  0.02

这是我到目前为止所提出的,但它只是在最后打印整套。

import pandas as pd
df = pd.read_csv (r'data_01.csv')
max1 = df['AVE_SPEED'].max()
print ('Max Speed in MPH: ' + str(max1))
groupby_max1 = df.groupby(['DATE']).max()
print ('Maximum Average Speed Value and Date of Occurance: ' + str(groupby_max1))
python max
2个回答
0
投票

您的初始平均速度最大值在熊猫中是正确的。

要查找相应的日期,我会执行以下操作:

mport pandas as pd
df = pd.read_csv (r'data_01.csv')
max1 = df['AVE_SPEED'].max()
print ('Max Speed in MPH: ' + str(max1))
date_of_max = df[df['AVE_SPEED'] == max1]['date'].values[0]

实际上,您正在创建另一个数据框,其中任何“AVE_SPEED”必须等于最大速度(除非存在相同最大速度的多个实例,否则它应该是单行)。从那里,您返回该数据框/行的“日期”值。

然后,您可以根据需要打印/返回最大速度和相应的日期。


0
投票

我想建议一个非熊猫方法,因为许多新程序员专注于学习pandas而不是学习python - 特别是在这里可能更容易理解普通python正在做什么而不是使用数据帧:

with open('data_01.csv') as f:
    data = f.readlines()[1:]  # ditch the header
    data = [x.split() for x in data]  # turn each line in to a list of its values
    data.sort(key=lambda x: -float(x[-1]))  # sort by the last item in each list (the speed) ascending
    print(data[0][2])  # print the date (index 2) from the first item in your sorted data
© www.soinside.com 2019 - 2024. All rights reserved.