该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
import csv
import re
import time
with open(r'janfeb2019.csv', 'r', encoding='utf-8')as file:
lines = csv.reader(file)
list1 = list(lines)
# 获取日期
datetimes1 = set(map(lambda x: re.match('\d+/\d+/\d+', x[3]).group(), list1[1:]))
# 补全日期和24小时
dt = [f'{i} {j}:00' for i in datetimes1 for j in range(24)]
# 重新生成个字典,保存区间的温度值
dict_dt = {x: [] for x in dt}
for i in list1[1:]:
# 获取日期小时然后获取温度用
date_time = re.match('\d+/\d+/\d+ \d+', i[3]).group()
dict_dt.get(f'{date_time}:00', []).append(float(i[4]))
# 求小时内的平均值,没有的None
dict_dt = {key: round(sum(value) / len(value), 1) if value else None for key, value in dict_dt.items()}
# 按日期时间排个序
sort_dt = sorted(dict_dt.items(), key=lambda x: time.strptime(x[0], "%m/%d/%Y %H:%M"))
# 排除小时内完全没数据的,重新生成一份列表
date_t = []
for i in sort_dt:
if i[1]:
date_t.append(['PER_WEATHER_KING_GATE_WEATHER', 'Temperature,Celsius', i[0], i[1], 'FALSE'])
# 替换原本的内容
list1[1:] = date_t
# 重新写入保存
with open(r'new_janfeb2019.csv', 'w', encoding='utf-8', newline='') as csvFile:
writer = csv.writer(csvFile)
writer.writerows(list1)