使用.txt中的列进行计算

2021-09-27 05:47:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个5列36行的文本文件。我想选择一个特定的列并在计算中使用它。你知道吗

样本数据:

#1        2         3          4        5     
50.0  0.000E+00  1.386E+16  3.718E+15  261.9   
60.0  0.000E+00  3.929E+15  1.054E+15  247.5   
70.0  0.000E+00  1.043E+15  2.792E+14  227.9   
80.0  3.425E+09  2.425E+14  6.453E+13  212.8  

比方说,我想选择第3、第4和第5列作为计算。你知道吗

DataIn = loadtxt('filename.txt')
a = DataIn[:,2:3]
b = DataIn[:,3:4]
c = DataIn[:,4:5]
z = DataIn[:,0:1]

计算:

d = a*1.6
e = b*3.2
f = c*2.8
ave = (d + e + f)/3
h = z/ave

我希望输出为一列,并把它与z,e,f,ave,和h文件。这一部分,我不知道怎么做。你知道吗

有没有更干净的方法?你知道吗

任何帮助都将不胜感激。非常感谢。你知道吗

3条回答
网友
1楼 ·

为什么要用包裹?如果我必须循环一些数据,我会这样做:

txtfile = open("filename.txt", "r")
outfile = open("outfile.txt", "w")
for line in txtfile:
    row = line.split("  ")
    z = float(row[0])
    a = float(row[2])
    b = float(row[3])
    c = float(row[4])
    d = a * 1.6
    e = b * 3.2
    f = c * 2.8
    ave = (d + e + f) / 3
    h = z / ave
    outfile.write(str(z) + "\t" +
                  str(e) + "\t" +
                  str(f) + "\t" +
                  str(ave) + "\t" +
                  str(h) + "\n")
网友
2楼 ·

我想出来了。谢谢大家的帮助。你知道吗

z, a , b, c = loadtxt('filename.txt',unpack=True, usecols=[0, 1, 2, 3])

计算:

d = a*1.6
e = b*3.2
f = c*2.8
ave = (d + e + f)/3
h = z/ave

正在写入文件:

import csv
zip(z, e, q1, f, ave, h)
with open('outfile.txt', 'w') as f:
writer = csv.writer(f, delimiter='\t')
writer.writerows(zip(z, e, q1, f, ave, h))
网友
3楼 ·

将数据加载到pandas不仅可以简化计算,还可以保存更新的文本文件。下面是d计算的示例。将数据加载到DataFrame中,执行d的计算,这将向DataFrame添加一个新列,然后创建一个新文件并添加新列。你知道吗

df = pd.read_csv('filename.txt', sep=' ', header=None, names=['z', 'a', 'b', 'c'])
df['d'] = df['a']*1.6
df.to_csv('new_file.txt')

相关问题