Ich habe Pandas DataFrame wie diesen
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
Ich möchte diese Daten in eine Textdatei schreiben, die so aussieht:
18 55 1 70
18 55 2 67
18 57 2 75
18 58 1 35
19 54 2 70
Ich habe so etwas versucht
f = open(writePath, 'a')
f.writelines(['\n', str(data['X']), ' ', str(data['Y']), ' ', str(data['Z']), ' ', str(data['Value'])])
f.close()
aber es funktioniert nicht. Wie macht man das?
Spät zur Party: Versuchen Sie dies>
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
quelle
Der derzeit beste Weg, dies zu tun, ist
df.to_string()
:with open(writePath, 'a') as f: f.write( df.to_string(header = False, index = False) )
Gibt Folgendes aus
18 55 1 70 18 55 2 67 18 57 2 75 18 58 1 35 19 54 2 70
Mit dieser Methode können Sie auch einfach auswählen, welche Spalten mit dem
columns
Attribut gedruckt werden sollen, die Spalte beibehalten, Beschriftungen indizieren, wenn Sie dies wünschen, und andere Attribute für den Abstand ect haben.quelle
@AHegde - Um die tabulatorgetrennte Ausgabe zu erhalten, verwenden Sie das Trennzeichen sep = '\ t'.
Für df.to_csv:
df.to_csv(r'c:\data\pandas.txt', header=None, index=None, sep='\t', mode='a')
Für np.savetxt:
np.savetxt(r'c:\data\np.txt', df.values, fmt='%d', delimiter='\t')
quelle
Möglichkeit, Excel-Daten in tabulatorgetrennter Form in eine Textdatei zu übertragen. Müssen Pandas sowie xlrd verwenden.
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)
Wir müssen zuerst die xlsx-Datei mit gefilterten Daten generieren und dann die Informationen in eine Textdatei konvertieren.
Abhängig von den Anforderungen können wir \ n \ t für Schleifen und Datentypen verwenden, die in der Textdatei enthalten sein sollen.
quelle
Ich habe eine leicht modifizierte Version verwendet:
with open(file_name, 'w', encoding = 'utf-8') as f: for rec_index, rec in df.iterrows(): f.write(rec['<field>'] + '\n')
Ich musste den Inhalt eines Datenrahmenfeldes (das begrenzt war) als Textdatei schreiben.
quelle