如何使用 pandas 根据标签拆分文件?
How to split a file according to labels using pandas?
我有以下格式的基因组测序文件:
染色体名称(字符串)|位置(整数) |读数(整数)
所有染色体的数据都存储在一个文件中,我希望
- 将文件拆分为单独的染色体数据文件;
- 转换染色体名称,例如'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
我有以下格式的基因组测序文件:
染色体名称(字符串)|位置(整数) |读数(整数)
所有染色体的数据都存储在一个文件中,我希望
- 将文件拆分为单独的染色体数据文件;
- 转换染色体名称,例如'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