Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在一个文件中减去两个单独的列_Python_Linux - Fatal编程技术网

Python 如何在一个文件中减去两个单独的列

Python 如何在一个文件中减去两个单独的列,python,linux,Python,Linux,我有一个文件如下所示: scaf12446 275 482 loc.04759 . + 9.99087136654 scaf9003 58436 58745 loc.36424 . + 9.98867551051e-07 scaf6164 41519 44781 loc.29229 . - 9.97790659076e-07 scaf20 64796 100

我有一个文件如下所示:

scaf12446   275     482     loc.04759  .       +       9.99087136654
scaf9003    58436   58745   loc.36424  .       +       9.98867551051e-07
scaf6164    41519   44781   loc.29229  .       -       9.97790659076e-07
scaf20      64796   100635  loc.14273  .       -       9.97726500173
scaf19280   12335   12568   loc.13668  .       +       9.95702976886
scaf8877    30882   32362   loc.36113  .       -       9.94423702955e-08
我想从第二列中减去第三列,然后打印出值。因此,生成的文件应如下所示:

scaf12446   207     loc.04759  .       +       9.99087136654
    scaf9003    309   loc.36424  .       +       9.98867551051e-07
    scaf6164    3262   loc.29229  .       -       9.97790659076e-07
    scaf20      35839  loc.14273  .       -       9.97726500173
    scaf19280   233   loc.13668  .       +       9.95702976886
    scaf8877    1480  loc.36113  .       -       9.94423702955e-
这张表很长-有没有简单的方法从第2列减去第3列?linux快捷方式将是理想的选择

使用python和pandas

#! /usr/bin/env python3

"""
sub_col.py

Call as
    $ python sub_col.py file
"""

import sys
import pandas as pd

def main(file):
    df = pd.read_csv(file, delim_whitespace=True, header=None)
    df[2] -= df[1]
    del df[1]
    df.to_csv(file, header=False, index=False, sep='\t')

if __name__ == '__main__':
    main(sys.argv[1])
输出数据帧:

scaf12446   207 loc.04759   .   +   9.990871366539999
scaf9003    309 loc.36424   .   +   9.98867551051e-07
scaf6164    3262    loc.29229   .   -   9.97790659076e-07
scaf20  35839   loc.14273   .   -   9.97726500173
scaf19280   233 loc.13668   .   +   9.95702976886
scaf8877    1480    loc.36113   .   -   9.944237029550001e-08

分隔符是什么?堆栈溢出不是代码编写服务。请出示你的密码。由于堆栈溢出对您隐藏了关闭原因:寻求调试帮助的问题(“为什么此代码不工作?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。