当前位置: 首页 > 知识库问答 >
问题:

tsv文件间的完全连接和基于原始文件的列重命名

邓鸿彩
2023-03-14

我有176个.tsv文件,这是基因比对的结果,如下所示:

在这些文件中,我希望target_id列之间有一定的重叠,但不是完整的,因此我希望进行完全连接并保留所有行。另外,我感兴趣的是只保留每个文件的tpm值,并根据文件名重命名列。

预期的数据帧类似于:

我知道bash中的join函数,但它每次可以用于两个文件,如果我理解得正确,我就不能选择特定的列...

提前谢谢!

编辑:文件名为srr*.tsv

共有1个答案

唐伟
2023-03-14

让我知道如果这段代码适合你,没有文件很难测试。

import os
import sys
import pandas as pd

df = pd.DataFrame()

for fn in os.listdir(sys.argv[1]):
    if '.tsv' in fn:
        header = fn.replace('.tsv', '')
        this_df = pd.read_csv(fn)
        for i, row in this_df.iterrows():
            value = row['tpm']
            df.loc[df['target_id'] == row['target_id'], header] = value

df.to_csv('joined.tsv', sep='\t', index=False)

另存为tsvjoin.py,然后使用tsvs>运行Python3tsvjoin.py<文件夹

编辑:错别字

 类似资料:
  • 使用Websphere MQ Explorer,我为JMS创建了一个新的基于初始上下文的文件系统。使用新的初始上下文,我创建了一个JMS队列来连接到现有队列(当前使用非基于java的框架访问)。 在应用程序代码中,我可以成功连接到上下文,如下所示: 接下来,我创建一个QueueConnectionFactory: 但是,这会引发以下异常: 我使用了com。ibm。mq。jms。MQQueueFac

  • 我正在尝试做一个应用程序,共享的孩子是在应用程序的“原始”文件夹,但我没有得到它。该文件是共享的,但没有.mp3扩展名。我无法收听Windows Media Player,但我手动放了一个.mp3扩展名。有没有人知道我是怎么做到的。mp3扩展自动?将URI转换/重命名为mp3文件。 歌曲的名字是在文件中注册的,我相信,如果有可能重命名添加.mp3在最后可能会起作用。但我不能重命名。 我正在使用以下

  • 在我的项目中,我正在上传一个文件。上传时,我将其原始文件名和扩展名保存在数据库中,并将该文件与一些一起保存在服务器上,生成的GUID也与文件名和扩展名一起存储在数据库中。 比如-- -用于上载的文件名为Questions.docx -则orignalFileName将为“问题” -文件扩展名将为“.docx” -上传文件,文件名为“0C1B96D3-AF54-40D1-814D-B863B7528

  • 问题是输出文件的大小大于原始文件 编辑:-我知道的解决方案,即读写文件字节明智,但我的问题是为什么这是发生的?

  • 问题内容: 我有一个内存限制的队列,其中多个线程将对象排队。通常,应该由处理队列中项目的单个读取器线程清空队列。 但是,队列可能已满。在这种情况下,我想将磁盘上的所有其他项保留在磁盘上,这将由另一个后台读取器线程处理,该线程将扫描目录中的此类文件并处理这些文件中的条目。我熟悉Active MQ,但是更喜欢轻量级的解决方案。如果未严格遵循“ FIFO”,则可以(因为保留的条目可能会乱序处理)。 有没