【发布时间】:2018-06-22 16:11:45
【问题描述】:
我目前正在使用一组天气数据,并试图从数据中找到最小值和最大值。我已将文件读入有序字典并可以输出我所有的数字,但我很难尝试输出正确的最小值和最大值。以下是其中一项数据的示例:
OrderedDict([('STATION', 'USW00003894'), ('NAME', 'CLARKSVILLE OUTLAW AIRPORT, TN US'), ('DATE', '2002-07-20'), ('PRCP', 0.0), ('SNOW', None), ('SNWD', None), ('TAVG', 79.0), ('TMAX', 89.0), ('TMIN', 69.0)])
OrderedDict([('STATION', 'USW00003894'), ('NAME', 'CLARKSVILLE OUTLAW AIRPORT, TN US'), ('DATE', '2002-07-21'), ('PRCP', 0.12), ('SNOW', None), ('SNWD', None), ('TAVG', 82.0), ('TMAX', 92.0), ('TMIN', 71.0)])
OrderedDict([('STATION', 'USW00003894'), ('NAME', 'CLARKSVILLE OUTLAW AIRPORT, TN US'), ('DATE', '2002-07-22'), ('PRCP', 0.0), ('SNOW', None), ('SNWD', None), ('TAVG', 80.0), ('TMAX', 90.0), ('TMIN', 70.0)])
有一些缺失值,我已将其替换为 none 数据类型,并且我不想在我的计算中包含 None 或零值。
下面是我目前的代码:
with open('Clarksville_weather_history.txt', newline='') as clarksWeather:
reader = csv.DictReader(clarksWeather)
for row in reader:
if len(row['PRCP']) > 0:
row['PRCP'] = float(row['PRCP'])
else:
row['PRCP'] = None
if len(row['SNOW']) > 0:
row['SNOW'] = float(row['SNOW'])
else:
row['SNOW'] = None
if len(row['SNWD']) > 0:
row['SNWD'] = float(row['SNWD'])
else:
row['SNWD'] = None
if len(row['TAVG']) > 0:
row['TAVG'] = float(row['TAVG'])
else:
row['TAVG'] = None
if len(row['TMAX']) > 0:
row['TMAX'] = float(row['TMAX'])
else:
row['TMAX'] = None
if len(row['TMIN']) > 0:
row['TMIN'] = float(row['TMIN'])
else:
row['TMIN'] = None
#result = min(reader, key=lambda x:x['PRCP'])
#print(result)
任何帮助或指导将不胜感激。我尝试过的所有方法都不允许我有效地解析数据。我是这种语言的新手,就在 DictReader 中的使用而言,似乎没有很多。
提前致谢!
【问题讨论】:
标签: python python-3.x csv dictionary ordereddictionary