Actualmente tengo 1 archivo de texto (tab del) con 15,000 registros. Tengo otro archivo de texto (tab del) con 5000 registros.

En el archivo con 5000 registros hay algunas filas que coinciden con el archivo que contiene 15,000 registros. Estos son identificables por un encabezado de columna llamado URN (número de registro único). por ejemplo, es posible que necesite sacar URN 62294 del archivo principal, pero no sé si tengo que sacarlo hasta que compare los dos archivos y vea que está en ambos.

¿Qué tan difícil es hacer esto en Python?

0
mbf94 17 feb. 2017 a las 11:35

3 respuestas

La mejor respuesta

Es difícil ? No, podrías hacerlo fácilmente con

file1 = open("file1.txt","r")
results = []

for line in file1:
    file2 = open("file2.txt","r")
    for l in file2:
        if (l.split("\t")[0] == line.split("\t")[0]):
            results.append(l.split("\t")[0])
            break
    file2.close()
file1.close()

for i in results:
    print(i)

Ahora, ¿es la mejor manera? Probablemente no para archivos grandes. (Me tomó 74 segundos con sus archivos).

0
Pol 17 feb. 2017 a las 09:08

Intenta instalar pandas con pip install pandas

Entonces ejecuta esto:

import pandas as pd

filename1 = #main file
filename2 = #the other file
main = pd.read_csv(filename1,sep='\t') # sep='\t' is for tab delimited file
side = pd.read_csv(filename2,sep='\t')
main['URN'] = main['URN'].astype(int)
side['URN'] = side['URN'].astype(int)
merge = pd.merge(main,side,on='URN',how='inner') #how=inner means the URN value is in both 2 files
#merge = merge[merge['URN'] != 62294]
print (merge)
merge.to_excel('Output.xlsx,index=False)
1
Alex Fung 18 feb. 2017 a las 02:43

Puede consultar la Pandas biblioteca. Le permitirá cargar ambas tablas como marcos de datos y unirlas en la columna necesaria en un estilo tipo sql. Debería ser bastante fácil con la documentación.

0
zuku 17 feb. 2017 a las 08:46