Lectura de .csv en trozos, manteniendo solo las filas que tienen números que coinciden con un marco de datos de referencia, luego escribir esos trozos en otro csv.
Estoy bastante seguro de que junté partes incorrectas del código de otras personas. Cuando pruebo el código a continuación, el tamaño de mi archivo aumenta cuando la idea original era agregar solo las filas con números bbl que coinciden de dos dataframes.
marco de referencia que es solo una columna de números
dfr = pd.read_excel (& # 39;C: /pythonstuff/CRMBBLS.xlsx & # 39;)
reflist = dfr [& # 39;bbl & # 39;]. tolist ()
dfr [& # 39;bbl & # 39;] = dfr [& # 39;bbl & # 39;]. astype (str)
tamaño_de_bloque = 1000
para fragmento en pd.read_csv (& # 39;C: /pythonstuff/pluto_21v3.csv & # 39 ;, chunksize = tamaño_de_bloque):
# diccionario para volver a asignar el municipio al número
di = {“MN”: 1, “BX”: 2, “BK”: 3, “QN”: 4, “SI”: 5}
# agregar ceros principales para preparar la concatenación de columnas
trozo [“municipio”] = trozo [“municipio”]. mapa (di)
trozo [& # 39; bloque & # 39;] = trozo [& # 39; bloque & # 39;]. aplicar (lambda x: & # 39; {0: 0 & gt; 5} & # 39 ;. formato (x))
trozo [& # 39; lote & # 39;] = trozo [& # 39; lote & # 39;]. aplicar (lambda x: & # 39; {0: 0 & gt; 4} & # 39 ;. formato (x))
# crear nuestra columna bbl para comparar con nuestro marco de referencia (bbl en dfr)
trozo [& # 39;bbl & # 39;] = trozo [& # 39; municipio & # 39;]. astype (str) + trozo [& # 39; bloque & # 39;]. astype (str) + trozo [& # 39; lote & # 39;]. astype (str)
mergedStuff = pd.merge(dfr, trozo, on=[‘bbl’], how=’inner’)
trozo.to_csv (“C:/pythonstuff/final.csv”,
encabezado=encabezado, modo = ‘a & # 39;)
Supongo que la parte de fusión está fusionando todo y no desechando las filas que no quiero, luego agregándolo a un archivo CSV masivo.
Realmente soy un principiante en informática. Si estoy completamente fuera de lugar, apreciaría al menos una dirección cardinal para comenzar a poder ayudarme a mí mismo. No puedo analizar la documentación la mitad del tiempo. Gracias.
davy.ai
Parece que estás en el buen camino, pero es posible que debas ajustar tu código para obtener el resultado deseado. Para ayudarte a empezar, aquí hay algunos consejos:
how
correcto en tu llamada apd.merge()
. El argumentohow
determina cómo se fusionan los dos dataframes. En tu caso, deseas utilizarhow='inner'
para mantener solo las filas que coinciden en la columnabbl
en ambos dataframes..drop()
para eliminar cualquier columna no necesaria del dataframe combinado..to_csv()
para escribir el dataframe combinado en un archivo CSV.Si sigues teniendo problemas, puedes encontrar documentación más detallada en el sitio web de Pandas. ¡Buena suerte!