2015-08-28 2 views
0

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

хромосома имя (строка) | местоположение (int) | чтения (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 ...

+0

Вы группируете хромосомы в свои собственные файлы? –

+0

Вероятно, вы должны уточнить свой вопрос и сконцентрироваться на конкретной проблеме с вашим кодом. Сейчас это встречается как «вот смутно описанная коллекция задач, пожалуйста, реализуйте их для меня», что, я уверен, не было вашим намерением. – DSM

+0

Да, я пытаюсь сгруппировать хромосомы с собственными файлами или найти способ вытащить данные из одной хромосомы с помощью команды pandas. Я знаю, как это сделать для столбцов кадра данных, например. df ['location'], есть ли что-нибудь подобное для строк? – ChenChao

ответ

1

записи данных каждой хромосомы к отдельному файлу может легко выполняться после того, как dataframe сплайсируется на куски. Не совсем уверен, что вы подразумеваете под «преобразованием имен хромосомы в целые числа», но если вы имеете в виду заданный «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 
Смежные вопросы