Как разделить файл по меткам с помощью панд?

У меня есть файл секвенирования генома в следующем формате:

имя хромосомы (строка) | местоположение (int) | чтения (int)

Данные для всех хромосом хранятся в одном файле, и я хочу

  1. разбить файл на отдельные файлы данных хромосомы;
  2. преобразовать имена хромосом, например, '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
Другие вопросы по тегам