Как разделить файл по меткам с помощью панд?
У меня есть файл секвенирования генома в следующем формате:
имя хромосомы (строка) | местоположение (int) | чтения (int)
Данные для всех хромосом хранятся в одном файле, и я хочу
- разбить файл на отдельные файлы данных хромосомы;
- преобразовать имена хромосом, например, 'chr1', 'x' в целые числа.
Как я могу сделать это с Пандами?
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, ...
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