python - 如何访问列值并使用python进行一些计算
问题描述
您好我有一个文本文件,其中包含如下数据并保存在名称 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)
但是,它不访问列值并且不进行计算......我希望一些专家能帮助我。提前致谢。
解决方案
您可以将 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
推荐阅读
- html - 为什么 justify-content 属性不起作用?
- tomcat - 通过负载均衡器访问 Tomcat
- mysql - 如何使用 MySQL 更改 Rails 中大型表的“id”列类型
- java - 如何打印由制表符分隔的文件中的第一个单词?
- r - 按多列汇总
- postgresql - 如何在事务模式下将 statement_timeout 与 pgBouncer 一起使用
- javascript - 区分控制器的 2 条路由(NestJS)
- python - 如何确保python读取文件夹中的所有文件?
- javascript - 在输出到 HTML 之前计算数据中的列表项
- javascript - XMLHttpRequest.send() 未发送“UNION SELECT”