【问题标题】:How to split a file according to labels using pandas?如何使用熊猫根据标签拆分文件?
【发布时间】:2015-08-28 18:12:54
【问题描述】:

我有一个格式如下的基因组测序文件:

染色体名称(字符串)|位置 (int) |读数(整数)

所有染色体的数据都存储在一个文件中,我希望

  1. 将文件拆分为单独的染色体数据文件;
  2. 转换染色体名称,例如'chr1', 'x' 转换为整数。

如何使用 Pandas 做到这一点?

import pandas as pd
df = pd.read_csv('sample.txt', delimiter='\t', header=None)

数据是这样的

0   chr1    3000573     0   
1   chr1    3000574     3   
2   chr2    3000725     1   
3   chr2    3000726     4   
4   chr3    3000900     1   
5   chr3    3000901     0   

我还可以通过染色体标签 chr1、chr2、...重新索引数据框

【问题讨论】:

  • 您正在将染色体分组到它们自己的文件中?
  • 您可能应该使您的问题更具体,并专注于您的代码的特定问题。现在它的意思是“这是一个描述模糊的任务集合;请为我实现它们”,我敢肯定这不是你的意图。
  • 是的,我正在尝试将染色体分组到自己的文件中,或者找到一种方法来使用 pandas 命令提取单个染色体的数据。我知道如何对数据框的列执行此操作,例如df['location'],行有类似的东西吗?
  • 进行排序和分组,你也可以只使用 csv 库和字典来分组
  • 为了让其他人有所帮助,您的问题需要更加具体。例如,包括一些示例数据并说明所需的输出。请参考这篇文章,了解如何写好问题。 stackoverflow.com/questions/20109391/…

标签: python pandas genetics


【解决方案1】:

一旦将数据框拼接成片段,就可以轻松地将每个染色体的数据写入单个文件。不太确定“将染色体名称转换为整数”是什么意思,但如果您的意思是给定“chrx”,您希望 x 作为 int,这很容易。假设你有染色体“chr1”到“chrn”,其中 n 是一个整数:

import pandas
df = pandas.read_csv("sample.txt", delimiter="\t", header=None)
df.columns = ["index", "chrid", "location", "readings"]
chrs = []
for chrid in range(1,n):
    chr = df.loc[df["chrid"] == "chr"+str(chrid)]
    chr["chrid"] = map(lambda x: return int(x[3]), chr["chrid"])
    chrs.append(chr)
# chrs is now a list of dataframes, each for individual chromosome data

【讨论】:

    猜你喜欢
    • 2019-01-19
    • 2023-01-11
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    相关资源
    最近更新 更多