Tengo pandas DataFrame como este
X Y Z Value
0 18 55 1 70
1 18 55 2 67
2 18 57 2 75
3 18 58 1 35
4 19 54 2 70
Quiero escribir estos datos en un archivo de texto que se ve así:
18 55 1 70
18 55 2 67
18 57 2 75
18 58 1 35
19 54 2 70
He intentado algo como
f = open(writePath, 'a')
f.writelines(['\n', str(data['X']), ' ', str(data['Y']), ' ', str(data['Z']), ' ', str(data['Value'])])
f.close()
pero no funciona. ¿Como hacer esto?
Tarde para la fiesta: prueba esto>
base_filename = 'Values.txt' with open(os.path.join(WorkingFolder, base_filename),'w') as outfile: df.to_string(outfile) #Neatly allocate all columns and rows to a .txt file
fuente
La mejor manera actual de hacer esto es usar
df.to_string()
:with open(writePath, 'a') as f: f.write( df.to_string(header = False, index = False) )
Producirá lo siguiente
18 55 1 70 18 55 2 67 18 57 2 75 18 58 1 35 19 54 2 70
Este método también le permite elegir fácilmente qué columnas imprimir con el
columns
atributo, le permite mantener la columna, las etiquetas de índice si lo desea, y tiene otros atributos para el espaciado, etc.fuente
@AHegde: para obtener la salida delimitada por tabulaciones, use el separador sep = '\ t'.
Para df.to_csv:
df.to_csv(r'c:\data\pandas.txt', header=None, index=None, sep='\t', mode='a')
Para np.savetxt:
np.savetxt(r'c:\data\np.txt', df.values, fmt='%d', delimiter='\t')
fuente
Manera de obtener datos de Excel en un archivo de texto en forma delimitada por tabulaciones. Necesita usar Pandas y xlrd.
import pandas as pd import xlrd import os Path="C:\downloads" wb = pd.ExcelFile(Path+"\\input.xlsx", engine=None) sheet2 = pd.read_excel(wb, sheet_name="Sheet1") Excel_Filter=sheet2[sheet2['Name']=='Test'] Excel_Filter.to_excel("C:\downloads\\output.xlsx", index=None) wb2=xlrd.open_workbook(Path+"\\output.xlsx") df=wb2.sheet_by_name("Sheet1") x=df.nrows y=df.ncols for i in range(0,x): for j in range(0,y): A=str(df.cell_value(i,j)) f=open(Path+"\\emails.txt", "a") f.write(A+"\t") f.close() f=open(Path+"\\emails.txt", "a") f.write("\n") f.close() os.remove(Path+"\\output.xlsx") print(Excel_Filter)
Primero debemos generar el archivo xlsx con datos filtrados y luego convertir la información en un archivo de texto.
Dependiendo de los requisitos, podemos usar \ n \ t para bucles y el tipo de datos que queremos en el archivo de texto.
fuente
Usé una versión ligeramente modificada:
with open(file_name, 'w', encoding = 'utf-8') as f: for rec_index, rec in df.iterrows(): f.write(rec['<field>'] + '\n')
Tuve que escribir el contenido de un campo de marco de datos (que estaba delimitado) como un archivo de texto.
fuente