Сравните два столбца одного файла с другим файлом того же столбца и извлеките match_large dataset_14GB - PullRequest
1 голос
/ 03 мая 2019

У меня есть файл1 из 650 000 строк с двумя столбцами: "Chr" и "Pos".Я хочу сравнить этот файл с набором данных dbsnp (file2) и сопоставить его с Chr и Pos col, присутствующими в дампе dbSNP.После сопоставления соответствующие rsid должны быть получены.Я пытался использовать Python Panda, но мой процесс был убит.Когда он попробовал 50000 строк, это сработало.

Как я могу получить rsid для всего набора данных (file1 = 650k строк) из dbSNP (file2)

#Program to compare Chr and Pos of a sample with dBSNP and fetching RSIDs
import pandas as pd
df1 = pd.read_csv("v2_infi_chr_pos.csv",sep='\t',dtype='unicode')
df2 = pd.read_csv("dbsnp150_header.txt",sep='\t',dtype='unicode')
df3 = pd.merge(df1, df2, on='Chr''Pos', how='inner')
export_csv = df3.to_csv (r'rsids_infiniumv2_hg38.txt', index = None, header=True)

1 Ответ

1 голос
/ 03 мая 2019

В соответствии с комментарием Мохита и чтением документации Панд 0.24.2 merge, вот как я бы это сделал -

# Program to compare Chr and Pos of a sample with dBSNP and fetching RSIDs

# import pandas
import pandas as pd

# read in data files
df1 = pd.read_csv("v2_infi_chr_pos.csv",sep='\t',dtype='unicode')
df2 = pd.read_csv("dbsnp150_header.txt",sep='\t',dtype='unicode')

# merge on matched columns 
df3 = df1.merge(df2, on=['Chr', 'Pos'], how='inner')

# export merged df to file
export_csv = df3.to_csv (r'rsids_infiniumv2_hg38.txt', index = None, header=True)

Параметр on в df.merge() принимает одну метку или несколько меток в виде списка. Поскольку вы хотите совпасть по нескольким столбцам, будет предоставлен список имен столбцов.

Кроме того, как убивают ваш процесс? Размещение вашего сообщения об ошибке будет более полезным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...