【问题标题】:how to access column values and do some calculation using python如何访问列值并使用python进行一些计算
【发布时间】:2020-11-19 15:17:15
【问题描述】:

您好,我有一个文本文件,其中包含如下数据并保存在名称 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 列值相乘,并希望将其除以第一列中存在的.out 字符串的第二个数字(39,29,29,28,30)

                                                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)

但是,它不访问列值,也不进行计算...我希望专家能帮助我。提前致谢。

【问题讨论】:

  • 我建议对这种表格数据使用pandas
  • 你能帮忙看看怎么做吗

标签: python numpy for-loop split readline


【解决方案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

【讨论】:

  • 但是我没有像 A B C D E F 以及 0 1 2 3 4 这样的 dexes
  • 我不明白你的意思。该示例完全符合您的要求。您可以随意命名列。
  • 我需要删除的索引标题
  • 然后删除它们。
  • 你怎么能建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
  • 2018-10-28
  • 1970-01-01
相关资源
最近更新 更多