我是编程新手,正在尝试编写一个程序,该程序可以评估并打印最大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))
答案 0 :(得分: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”必须等于最大速度(除非有多个具有相同最大速度的实例,否则它应为单行)。从那里,您返回该数据框/行的“日期”值。
然后您可以根据需要打印/返回最大速度和相应的日期。
答案 1 :(得分:0)
我想提出一种非熊猫方法,因为许多新程序员专注于学习熊猫而不是学习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