Использование столбца в .txt для расчета - PullRequest
0 голосов
/ 05 июля 2018

У меня есть текстовый файл с 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 ]

0 голосов
/ 05 июля 2018

Зачем использовать пакет? Я делаю это, если мне нужно просмотреть некоторые данные:

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")
0 голосов
/ 12 июля 2018

Я понял это. Спасибо всем за помощь.

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))
0 голосов
/ 05 июля 2018

Загрузка ваших данных в 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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...