我有这个代码来读取文件夹中的文本文件,对列进行一些分析并输出新列。奇怪的是,我得到的最后几行偏离了它们应该的位置。我发现更改segment
大小会影响最后一行,但无法找到解决方案。
我真的很感激,如果有人可以查看并告诉我我做错了。
files_ = glob.glob('D:\Test files\*.txt')
tfile_ = loadtxt('times.txt')
def cum_sum(lis):
total = 0
for x in lis:
total += x[1]
yield total
averages_ = []
d = []
with open ('outfile.csv', 'wb') as outfile:
writer = csv.writer(outfile)
for fcount_, fname_ in enumerate(files_):
tzero_ = int(round(tfile_[fcount_],1))
data = loadtxt(fname_ , usecols = (1,2,3,4), skiprows = tzero_)
average_, f_column, average_original, fcol = [], [], [], []
segment_size = 2
background_average = mean(data[0:5,0])
for x in range(0, len(data[:,0]), segment_size):
sample_means = [x/segment_size] + [mean(((data[x:x+segment_size,i])-(background_average))/10.467) for i in range(4)]
none_zeros = [x if x >= 0 else x == 0 for x in sample_means]
float_means = ["%1f" % (x) for x in none_zeros]
average_original.append(sample_means)
average_.append(float_means)
fcol = list(cum_sum(average_original))
average_ = [row + [col] for row, col in zip(average_, fcol)]
averages_.append(average_)
for row in izip_longest(*averages_, fillvalue = ['']):
writer.writerow(list(chain.from_iterable(row)))
输入数据:
的1.txt
2013-08-29T15:11:18.55912 0.019494552 0.110042184 0.164076427 0.587849877 8.5
2013-08-29T15:11:18.65912 0.036270974 0.097213155 0.122628797 0.556928624 8.6
2013-08-29T15:11:18.75912 0.055350041 0.104121094 0.121641949 0.593113069 8.7
2013-08-29T15:11:18.85912 0.057159263 0.107410588 0.198122695 0.591797271 8.8
2013-08-29T15:11:18.95912 0.05288292 0.102476346 0.172958062 0.591139372 8.9
2013-08-29T15:11:19.05912 0.043507861 0.104121094 0.162102731 0.598376261 9
2013-08-29T15:11:19.15912 0.068343545 0.102805296 0.168517245 0.587849877 9.1
2013-08-29T15:11:19.25912 0.054527668 0.105765841 0.184306818 0.587191978 9.2
2013-08-29T15:11:19.35912 0.055678991 0.107739538 0.169997517 0.539165352 9.3
2013-08-29T15:11:19.45912 0.05321187 0.102476346 0.167530397 0.645744989 9.4
2.txt
2013-08-29T15:11:19.35912 0.055678991 0.107739538 0.169997517 0.539165352 9.3
2013-08-29T15:11:19.45912 0.05321187 0.102476346 0.167530397 0.645744989 9.4
2013-08-29T15:11:19.55912 0.055021092 0.103134245 0.158155337 0.604955251 9.5
2013-08-29T15:11:19.65912 0.054363193 0.103463195 0.154207944 0.587191978 9.6
2013-08-29T15:11:19.75912 0.045974982 0.096555256 0.179372577 0.613507938 9.7
2013-08-29T15:11:19.85912 0.054527668 0.103463195 0.166543548 0.587191978 9.8
2013-08-29T15:11:19.95912 0.058310586 0.10050265 0.152727671 0.599692059 9.9
2013-08-29T15:11:20.05912 0.056830314 0.097542105 0.170490942 0.591797271 10
2013-08-29T15:11:20.15912 0.056830314 0.099186852 0.180852849 0.59903416 10.1
2013-08-29T15:11:20.25912 0.056172415 0.102805296 0.152234247 0.609560544 10.2
2013-08-29T15:11:20.35912 0.056994789 0.101818448 0.170984366 0.586534079 10.3
2013-08-29T15:11:20.45912 0.050909224 0.10609479 0.148286854 0.599692059 10.4
2013-08-29T15:11:20.55912 0.081994947 0.099186852 0.162596155 0.597718362 10.5
2013-08-29T15:11:20.65912 0.056830314 0.101160549 0.139898643 0.593770968 10.6
2013-08-29T15:11:20.75912 0.061271131 0.101489498 0.135457826 0.583244584 10.7
3.txt
2013-08-29T15:17:22.15912 0.118672813 5.650572169 4.684839266 2.462863007 372.1
2013-08-29T15:17:22.25912 0.108310905 5.51635861 4.67398387 2.374046541 372.2
2013-08-29T15:17:22.35912 0.135613712 5.414382684 4.676944432 2.366151744 372.3
2013-08-29T15:17:22.45912 0.105843784 5.294643278 4.630562289 2.37602024 372.4
2013-08-29T15:17:22.55912 0.116699116 5.177535575 4.667569318 2.35233585 372.5
2013-08-29T15:17:22.65912 0.119330712 5.056480492 4.711484329 2.357599048 372.6
2013-08-29T15:17:22.75912 0.12097546 4.973913071 4.672503588 2.356283248 372.7
2013-08-29T15:17:22.85912 0.121304409 4.881148118 4.638950548 2.354967449 372.8
2013-08-29T15:17:22.95912 0.122126783 4.783777856 4.665595609 2.367467544 372.9
2013-08-29T15:17:23.05912 0.114560945 4.739369136 4.646351954 2.35167795 373
2013-08-29T15:17:23.15912 0.127718924 4.688381358 4.647832235 2.432599618 373.1
2013-08-29T15:17:23.25912 0.125251803 4.659104509 4.632535997 2.30759867 373.2
2013-08-29T15:17:23.35912 0.127061025 4.630156618 4.621187175 2.345756853 373.3
2013-08-29T15:17:23.45912 0.126238651 4.613708955 4.619706894 2.348388452 373.4
4.txt
2013-08-29T15:17:24.35912 0.131172894 4.675223223 4.498817288 2.361546446 374.3
2013-08-29T15:17:24.45912 0.148936166 4.672591596 4.485988189 2.370099142 374.4
2013-08-29T15:17:24.55912 0.118014914 4.68278915 4.567897059 2.362204346 374.5
2013-08-29T15:17:24.65912 0.116699116 4.691341938 4.472665663 2.379309739 374.6
2013-08-29T15:17:24.75912 0.124758379 4.690355078 4.442566625 2.414178425 374.7
2013-08-29T15:17:24.85912 0.133804489 4.698907866 4.46378398 2.35233585 374.8
2013-08-29T15:17:24.95912 0.130186045 4.705486934 4.444540332 2.348388452 374.9
2013-08-29T15:17:25.05912 0.132653166 4.716342396 4.450954881 2.345756853 375
2013-08-29T15:17:25.15912 0.135284762 4.723908325 4.43861921 2.30891447 375.1
2013-08-29T15:17:25.25912 0.134791338 4.738053323 4.431217808 2.304967072 375.2
2013-08-29T15:17:25.35912 0.132159742 4.753185182 4.3813817 2.32996726 375.3
问题: 上面的代码给出了这个输出,其中第6行和第7行向右移动一列。这是我不明白的!
0 0 0.004933 0.006984 0.050252 -0.000307987 0 0.000101 0.004744 0.009797 0.051823 0.000100567 0 0 0.489086 0.433002 0.214708 -0.000531121
1 0.000572 0.005341 0.013042 0.051823 0.000263989 1 0 0.00443 0.011399 0.052232 -0.000223134 1 0.000317 0.467982 0.437104 0.214016 -0.000213706
2 0.000658 0.0052 0.011109 0.05198 0.000922391 2 0.000376 0.004336 0.010315 0.051792 0.000152422 2 0.000467 0.450524 0.433309 0.214425 0.00025299
3 0.00058 0.005514 0.01224 0.049121 0.001502225 3 0.000273 0.004524 0.010787 0.052609 0.00042584 3 0.000412 0.439194 0.432814 0.217379 0.000664687
4 0.000399 0.005106 0.011321 0.057009 0.001901351 4 0.00003 0.004807 0.010127 0.05154 0.000455696 4 0.000891 0.432579 0.430881 0.211125 0.001555651
5 0.001507 0.004446 0.009325 0.051792 0.001962634 5 0.000899 0.429624 0.430197 0.213199 0.002454472
6 0.000729 0.004572 0.007817 0.050598 0.002691747
顺便说一句, times.txt 是:
1.87
2.3
3.21
2.84
答案 0 :(得分:0)
看起来您的输出由制表符分隔。
如果一个数据条目的宽度超过标签宽度(通常为8个字符),它会将该行中的所有后续条目推送过那么多。