Python - 计算文件中第一列的第二列

Mov*_*ton 5 python numpy python-2.7 python-3.x

我是Python的初学者,无法应对我的项目中的一个时刻,所以我很乐意帮助我:)

让我们想象一下,我有一个只有一列的*.txt文件,如下所示:

         Column-1

row-1    0
row-2    25.00
row-3    27.14
row-4    29.29
row-5    31.43
row-6    33.57
Run Code Online (Sandbox Code Playgroud)

*此处添加了带行的列,以简化说明.

我需要计算从Column-1作为输入数据的第二列,并输出从前一行中减去该行值的结果(如果row-1(Column-1)值为0,则应该是它应该是第1行(第2列)中的0也是如此.应该是这样的:

  • 第2行(第2列)=第2行(第1列) - 第1行(第1列)
  • row-3(Column-2)= row-3(Column-1) - row-2(Column-1),依此类推.

让我告诉你输出文件应该如何:

         Column-1  Column-2

row-1    0         0
row-2    25.00     25.00
row-3    27.14     2.14
row-4    29.29     2.15
row-5    31.50     2.21
row-6    33.57     2.07
Run Code Online (Sandbox Code Playgroud)

现在我只在这里编程:

import sys

with open('file.txt', "r") as f:
    sys.stdout = open('%s (calc).txt' % f.name, 'a')
    for line in f:
        column = line.strip().split()
        Column_1 = float(column[0])
        column.extend([None])
Run Code Online (Sandbox Code Playgroud)

我不知道接下来该做什么.也许,numpy适合这项任务?我不坚强(基本上,我根本不知道),我应该学习它吗?

无论如何,我真的很感谢你的贡献.

Noc*_*wer 5

我相信这会做你所问的:

INPUT = 'file.txt'
OUTPUT = 'calc.txt'

def main():
    with open(INPUT, 'r') as reader, open(OUTPUT, 'a') as writer:
        last_value = 0
        for line in reader:
            column_1, *remaining_columns = map(float, line.split())
            column_2 = column_1 - last_value
            last_value = column_1
            print(column_1, column_2, sep='\t', file=writer)

if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)