我正在使用此格式(12/9/2015 6:11)解析一个具有日期时间(实际上是csv文件中的字符串)的列的文件,并在第二列中解析整数值。
日期时间值跨越几周,但不包括每天的每一分钟。
我想做以下事情: - 对于文件中的每一分钟,从包含该分钟加上接下来的5分钟的任何值计算第2列值的总和。下面是一个示例输入和一个所需的输出样本:
输入
Col1, Col2
12/9/2015 6:12, 5
12/9/2015 6:13, 10
12/9/2015 6:13, 15
12/9/2015 6:14, 10
12/9/2015 6:27, 5
所需输出
12/9/2015 6:12, 40
12/9/2015 6:13, 35
12/9/2015 6:14, 10
12/9/2015 6:27, 5
有关如何处理此事的任何想法?
答案 0 :(得分:0)
from collections import defaultdict
from datetime import datetime, timedelta
input = '''12/9/2015 6:12, 5
12/9/2015 6:13, 10
12/9/2015 6:13, 15
12/9/2015 6:14, 10
12/9/2015 6:27, 5'''
parsed = defaultdict(int)
for line in input.splitlines():
date_str, v = line.split(',')
parsed[datetime.strptime(date_str, '%m/%d/%Y %H:%M')] += int(v)
final = {}
for dt, v in parsed.items():
candidates_dt = [dt + timedelta(minutes=i) for i in range(6)]
final[dt] = sum(parsed[candidate_dt]
for candidate_dt
in candidates_dt
if candidate_dt in parsed)
print parsed
{
datetime.datetime(2015, 12, 9, 6, 27): 5,
datetime.datetime(2015, 12, 9, 6, 14): 10,
datetime.datetime(2015, 12, 9, 6, 13): 35,
datetime.datetime(2015, 12, 9, 6, 12): 40
}
瞧! :)
<强>解释强>:
您/可能在文件中有多行具有相同的日期
- &GT;我使用defaultdict(int)
为每个日期创建唯一键,能够在阅读文件时添加该日期找到的每个值
然后,对于从文件中读取的每个日期/值总和,我生成该日期的下一个5分钟和总和如果在文件中的初始解析数据中找到以下每个日期的值