как получить доступ к значениям столбцов и выполнить некоторые вычисления с помощью python

#python #numpy #for-loop #split #readline

#python #numpy #for-цикл #разделить #readline

Вопрос:

Hii у меня есть текстовый файл, содержащий данные, подобные приведенным ниже, и сохраненный в имени input.file

 2.0_39_RAS.out  1.911157    1.5  80  0  10
2.8_29_BAS.out  2.224520    1.5  78  0  60
2.0_29_CGD.out  2.198376    1.5  85  0  28
2.0_28_MPK.out  1.945320    1.5  78  0  36
2.1_30_CLR.out  2.281479    1.5  78  0  16
 

Я просто хочу выполнить некоторые вычисления, используя значения столбцов, и хочу записать его вывод в последнем столбце следующим образом:
для вывода: мне нужно умножить 4th 6th столбец на значение столбца и разделить его на второе число (39,29,29,28,30) из строки .out, присутствующей в первом столбце

                                                 output
2.0_39_RAS.out  1.911157    1.5  80  0  10       (80*10)/39  
2.8_29_BAS.out  2.224520    1.5  78  0  60       (78*60)/29
2.0_29_CGD.out  2.198376    1.5  85  0  28       (85*28)/29
2.0_28_MPK.out  1.945320    1.5  78  0  36       (78*36)/28
2.1_30_CLR.out  2.281479    1.5  78  0  16       (78*16)/30
 

я попытался написать скрипт для этого

 import numpy as np
import glob
import os
import sys
from pathlib import Path

dir1 = glob.glob('/home/drem/data/input.file')

for files in dir1:
    x=files
    a = open(x,'r')
    b = a.readlines()
    a.close()
    for line in b:
        columns=line.split()
        print(columns)
        col4=columns[3]
        print(col4)
 

Однако он не получает доступ к значениям столбцов и не выполняет вычисления … я надеюсь, что какой-нибудь эксперт мне поможет.Заранее спасибо.

Комментарии:

1. Я рекомендую использовать pandas для такого рода табличных данных.

2. не могли бы вы помочь, как это сделать

Ответ №1:

Вы можете использовать pandas для таких вычислений на основе таблиц / столбцов, но вам следует прочитать документы и выполнить несколько руководств, чтобы понять каждую строку:

Основная идея состоит в том, чтобы загрузить набор данных с помощью анализатора CSV и превратить его в pandas.DataFrame место, где вы можете манипулировать данными по столбцам.

 import pandas as pd

df = pd.read_csv(
    "input.file",
    delim_whitespace=True,
    names=["A", "B", "C", "D", "E", "F"],
    index_col=False)

df["result"] = df["D"] * df["F"] / df["A"].apply(lambda x: int(x.split("_")[1]))
print(df)
 

Дает вам:

                 A         B    C   D  E   F      result
0  2.0_39_RAS.out  1.911157  1.5  80  0  10   20.512821
1  2.8_29_BAS.out  2.224520  1.5  78  0  60  161.379310
2  2.0_29_CGD.out  2.198376  1.5  85  0  28   82.068966
3  2.0_28_MPK.out  1.945320  1.5  78  0  36  100.285714
4  2.1_30_CLR.out  2.281479  1.5  78  0  16   41.600000
 

Дополнительная информация доступна здесь: https://pandas.pydata.org

Комментарии:

1. однако я не использую dexes, такие как A B C D E F, а также 0 1 2 3 4

2. Я не понимаю, что вы имеете в виду. Пример делает именно то, что вы просили. Вы можете называть столбцы так, как вам нравится.

3. заголовки индексов, которые мне нужно удалить

4. Затем удалите их.

5. как вы можете предложить