我的数据看起来像这样:
statnr datum ele h01 h02 h03 h04 h05 h06 h07 h08 h09 h10 h11 h12 h13 h14 h15 h16 h17 h18 h19 h20 h21 h22 h23 h24
----------- ----------- --- ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------ ------
20101 20020401 D6K 103 126 115 114 105 101 118 118 130 129 126 128 132 133 131 130 130 131 130 130 125 117 122 124
20101 20020402 D6K 126 118 119 120 114 111 107 119 124 126 122 130 130 130 128 128 126 119 129 134 132 127 112 118
........
20101 20150909 D6K 72 82 75 76 82 93 91 96 99 101 108 108 103 100 94 90 82 92 88 79 77 89 94 92
20101 20020401 FLP 54 61 58 61 66 67 65 56 47 46 40 40 39 32 34 34 37 43 45 45 50 54 59 63
20101 20020402 FLP 64 61 67 66 68 69 67 56 50 46 42 39 33 32 33 34 39 48 55 58 61 62 65 68
........
20101 20150909 FLP 93 95 92 94 94 96 95 92 90 84 87 75 81 75 75 74 83 87 89 96 94 92 91 94
20101 20070906 GSE 32700 0 0 0 0 0 3 10 17 30 28 27 37 44 37 25 16 5 1 0 0 0 0 0
20101 20070907 GSE 0 0 0 0 0 0 11 48 72 107 257 264 290 216 255 178 122 57 6 0 0 0 0 0
........
20101 20150909 GSE 0 0 0 0 0 1 17 51 71 118 82 200 116 130 142 156 48 15 1 0 0 0 0 0
20101 20020101 SUV 0 0 0 0 0 0 0 0 9 10 10 10 10 10 10 10 2 0 0 0 0 0 0 0
........
20101 20150909 SUV 0 0 0 0 0 0 0 0 0 1 0 5 1 4 4 9 2 0 0 0 0 0 0 0
20101 20020401 TEX 30 18 21 18 9 10 18 42 69 91 114 117 126 135 133 127 114 87 58 47 39 33 27 24
........
20101 20150909 TEX 50 46 48 50 50 49 57 67 77 85 80 111 95 100 101 92 74 67 59 53 49 49 49 47
20101 20020401 QVX 6 10 9 8 13 25 19 15 16 19 24 24 19 23 24 22 24 23 19 13 12 16 16 18
........
20101 20150909 QVX 40 42 37 34 30 34 22 22 27 31 26 28 37 38 42 43 52 54 59 81 80 69 78 60
如您所见,它是一个巨大的表,带有statnr行,DateRow,ele代表该参数,而h01-h24则如您所想象的小时数。我需要将工作表中的格式调整为我正在使用的其他文件的格式(绘图和处理原因)
我目前正在尝试将此FileSheet转换为以下格式:
Date Time D6K FLP GSE SUV TEX QVX
01.04.2002 01:00 103 54 0 30 6
.....
09.09.2015 23:59 92 94 0 0 47 60
所以我想做的是:
1)摆脱第[0]行(statnr)
2)用Row [2]切换标题,以便所有参数都在标题中,并将它们链接到各行中的新Time Date fmt
3)将时间fmt从%H%M%D转换为%D%M&Y%H:%M
由于我是python和编码的新手,所以我想问一问是否有一个可以解决此类问题的软件包,以及是否有一个针对该问题的术语(用行切换标题)->谢谢(彼得·伍德)我将标题切换为“移调”
感谢您的建议
为了澄清起见:........
表示我-----------
在文件中遗漏了一些行
因为您可能缺少数据,所以这不是转置块的简单情况。我认为您需要做的是将输入文件读入数据结构,然后可以从中查找所需的值以生成输出。在Python中,您可以使用字典,其键是元素类型,日期和小时的元组:
mydict = {}
with open('F:\myfile.txt') as f:
z = f.readline() # discard headings
z = f.readline() # discard row of dashes
for line in f:
fields = line.split()
date = fields[1]
ele = fields[2]
for hour, value in enumerate(fields[3:27]):
mydict[(ele, date, hour)] = value
现在你有一个大字典,是由寻址所有的数据ele
,date
和hour
。我猜这些ele
值是固定的,您可以对它们进行硬编码,但是您将要构建一个在输入文件中实际找到的唯一日期的列表,并将它们按升序排列:
dateset=set()
for k in mydict.keys():
dateset.add(k[1])
dates=list(dateset)
dates.sort()
现在您可以构建输出文件了。
for date in dates:
for hour in range(24):
output = date + '\t' + hour
for ele in ['D6K', 'FLP', 'GSE', 'SUV', 'TEX', 'QVX']:
output = output + '\t' + mydict.get((ele, date, hour), '')
print(output)
get
如果您提供的键不在词典中,则使用词典中的方法可以指定要返回的默认值。
我没有处理日期格式(请注意,“小时”的范围是0到23),也没有处理输出到文件中的问题,但是上面的内容应该可以帮助您解决。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句