数据1:
Time Header Header Header Header
2015-08-01 07:00 14.4 14.4 14.4 68
2015-08-01 07:01 14.4 14.4 14.4 68
2015-08-01 07:01 14.4 14.4 14.4 68
数据2:
Time Header Header Header Header Header
07:00 34 31 37 51 72
07:02 32 31 17 56 12
我想合并这两个文件,以便得到输出:
Time Header Header Header Header Header Header Header Header Header
2015-08-01 07:00 14.4 14.4 14.4 68 34 31 37 51 72
如果时间戳没有参考文件,我只需要字段中的Data1一行,所以:
Time Header Header Header Header Header Header Header Header Header
2015-08-01 07:00 14.4 14.4 14.4 68 34 31 37 51 72
2015-08-01 07:01 14.4 14.4 14.4 68
2015-08-01 07:02 14.4 14.4 14.4 68 32 31 17 56 12
Data2文件是一个参考文件,每15分钟有一个条目,而数据1文件每分钟有一个文件。出于绘图目的,我想将参考文件添加到数据文件中。所以我想我正在寻找的是如何仅检查时间戳的%H:%M部分并进行合并。 我尝试了以下内容:文件夹中有更多Data1和Data2文件,所以我做的第一件事就是寻找匹配(Datewise)的Data1文件和Data2文件并将它们放在文件中--->然后我用它做了一个词典
for data1files in Data1_List:
with open(files) as csv_files:
reader = csv.reader(csv_files, dialect='excel-tab')
header_1 = next(csr_reader)
for rows in csr_reader:
k=rows[0]
v=rows[1:4]
Data1Dict[k]=v
参考文件数据2:
for data2files in Data2_List:
with open(data2files) as csv_files:
csr_reader = csv.reader(csv_files, dialect='excel-tab')
header_2 = next(csr_reader)
for rows in csr_reader:
k=rows[0]
v=rows[1:5]
Data2Dict[k]=v
所以两个词典中的键都是第一行:在Data1中它是2015-08-01 07:00
而在Data2中它是07:00
。是否有一种很酷的方法来比较这两个键,以便在正确的时间戳上合并参考文件中的日期
答案 0 :(得分:2)
此
merge_d = {d1k: d1v+Data2Dict.get(d1k[-5:]) for d1k,d1v in Data1Dict.items()
if d1k[-5:] in Data2Dict }
是一个合并了值的字典。
例如:
Data1Dict = {'2015-08-01 07:00': ['14.4', '14.4', '14.4', '68'],
'2015-08-01 08:00': ['15.4', '15.4', '15.4', '69']}
Data2Dict = {'07:00': ['34', '31', '37'],
'08:00': ['38', '38', '39']}
它产生
{'2015-08-01 07:00': ['14.4', '14.4', '14.4', '68', '34', '31', '37'],
'2015-08-01 08:00': ['15.4', '15.4', '15.4', '69', '38', '38', '39']}
注意:这是一个残酷的硬编码解决方案,假设时间具有位置和固定的表示(即总是hh:mm并且总是在同一个地方)。
在添加更多详细信息后编辑
如果Data2Dict中可能没有相应的时间(即Data1序列的采样频率高于Data2),事情就更容易了:
merge_d = {d1k: d1v+Data2Dict.get(d1k[-5:],[]) for d1k,d1v in Data1Dict.items() }
输入
Data1Dict = {'2015-08-01 07:00': ['14.4', '14.4', '14.4', '68'],
'2015-08-01 07:01': ['12.2', '12.3', '12.4', '99'],
'2015-08-01 07:02': ['15.4', '15.4', '15.4', '69']}
Data2Dict = {'07:00': ['34', '31', '37'],
'07:02': ['38', '38', '39']}
它产生
{'2015-08-01 07:00': ['14.4', '14.4', '14.4', '68', '34', '31', '37'],
'2015-08-01 07:01': ['12.2', '12.3', '12.4', '99'],
'2015-08-01 07:02': ['15.4', '15.4', '15.4', '69', '38', '38', '39']}