取三个不同文本文件的平均值并编译成一个文件



我在一个目录中有三个文本文件,其中有两列数据,由制表符(t)分隔。

我想取三个不同文本文件同一列中三个数字的平均值。我关注的数字在第二列或选项卡之后(在列表中它将位于位置 1)。然后我想输出一个文件,其中复制了所有第 1 列(它们是相同的文本)和第 2 列,其中包含相应行的平均值。

这就是我目前拥有的:我从另一个堆栈溢出问题中获得了此代码,但它没有遍历 3 个不同的文件。

谢谢!

import sys
allfiledata = []
filenames = sys.argv[1:]
for filename in filenames:
rows = []
with open (filename, "r") as filehandle:
for line in filehandle:
rows.append( line.split() )
allfiledata.append( rows ) 

print " ".join(allfiledata[0][0])  # column headers
for i1,columns in enumerate(allfiledata[0][1:]):
print columns[0],
for i2,value in enumerate(columns[1:]):
total = 0 
for filedata in allfiledata:
total = int(filedata[i1+1][i2+1]) + total
print int(float(total)/len(allfiledata)+0.5), 
print 

我的文本文件如下所示:

文件1.txt

AAA     4
AAB     5
AAC     0
AAD     1   

文件2.txt

AAA     4
AAB     5
AAC     0
AAD     1

文件3.txt

AAA     4
AAB     5
AAC     0
AAD     1

注意:这些列表数以千计 我想取三个不同文件中数字的平均值,这些文件看起来像这样,并输出一个包含复制的第一列和数字平均值的文件。

import glob
files = glob.glob(r'C:files*.txt')
d = {}
for file in files:
with open(file, 'r') as f:
for line in f:
k, v = line.split()
try:
d[k].append(int(v))
except KeyError:
d[k] = [int(v)]
with open('results.txt', 'w') as f:
for k in sorted(d.keys()):
line = '{0}t{1}n'.format(k, sum(d[k])/len(d[k]))
f.write(line)

编辑:如果您不使用python3并希望以浮点数形式获取结果,请不要忘记将from __future__ import division添加为脚本中的第一个代码行。

最新更新