Cómo dejar de escribir una línea en blanco al final del archivo csv – pandas

Al guardar los datos en csv, data.to_csv('csv_data', sep=',', encoding='utf-8', header= False, index = False) , se crea una línea en blanco al final del archivo csv.

¿Cómo evitas eso?

Tiene que ver con el line_terminator y su valor predeterminado es n , para la nueva línea.

¿Hay alguna forma de especificar el line_terminator para evitar crear una línea en blanco al final, o necesito leer el archivo csv, eliminar la línea en blanco y guardarla?

No estoy familiarizado con los pandas. ¡Su ayuda será apreciada, gracias de antemano!

Una forma sería guardar los datos excepto la última entrada, con el line_terminator predeterminado line_terminator ( \n ) y agregar la última línea con line_terminator="" .

 data1 = data.iloc[0:len(data)-1] data2 = data.iloc[[len(data)-1]] data1.to_csv('csv_data', sep=',', encoding='utf-8', header= False, index = False) data2.to_csv('csv_data', sep=',', encoding='utf-8', header= False, index = False,mode='a',line_terminator="") 

Por alguna razón, el terminador de línea no funcionó cuando lo probé. (Dio un error, diciendo que line_terminator es un argumento de palabra clave no reconocido).

Sin embargo, esto hará el truco:

  df.to_csv(path) with open(path) as f: lines = f.readlines() last = len(lines) - 1 lines[last] = lines[last].replace('\r','').replace('\n','') with open(path, 'w') as wr: wr.writelines(lines) 

Una forma más eficiente es abrir el archivo primero, escribir en esa secuencia y luego eliminar la última nueva línea:

 import os with open('csv_data', 'wb') as dst: data.to_csv(wb, sep=',', encoding='utf-8', header= False, index = False) dst.seek(-1, os.SEEK_END) # <---- 1 : len('\n') dst.truncate()