如何使用 pandas 根据标签拆分文件?

How to split a file according to labels using pandas?

我有以下格式的基因组测序文件:

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

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

  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、...重新索引数据框

一旦将数据帧拼接成片段,就可以轻松地将每个染色体的数据写入单个文件。不太确定 "convert chromosome names to integers" 是什么意思,但如果你的意思是给定 "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