如何减去一个文件中的两个单独的列 - python

                                                                                            
                
        
我有一个看起来像这样的文件:

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

如何从python向终端(linux)发送多个命令? - python

我想向Linux终端发送命令以运行python脚本。我有一个要运行的python文件列表,当我们顺序阅读该列表时,我想一个接一个地运行它们。第一个文件完成后,应发送第二个文件以运行,依此类推。 参考方案 您可以使用以下命令顺序运行脚本:python script1.py && python script2.py && pyth…

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

在当前目录下编写一个脚本,生成多个目录,创建空文件,然后列出所有文件。 - python

Closed. This question needs details or clarity。它当前不接受答案。                                                                                                                            …

Shell脚本如何从自身内部执行另一个Shell脚本 - python

我的问题是,shell脚本如何执行在新进程中生成的另一个shell脚本?还是在与调用它的脚本相同的过程中执行?一个示例是一个Python脚本,该脚本在满足条件后从Shell脚本执行,还有人如何编写此Shell脚本,使其生成Python脚本,然后退出自身而不会杀死Python脚本 python大神给出的解决方案 是的,如果您在外壳程序中调用外壳程序脚本,外壳程…

如何将python文件转换为linux可执行文件 - python

                                我使用python 2.7,我想知道如何将python代码更改为linux可执行文件,这与使用gcc -o hello hello.c非常相似,但使用python 参考方案 您通常不会。而是在文件中添加一个所谓的shebang,然后更改标志以使其可执行。所以第一行应该是这样的#!/usr/bin…