2016-07-18 6 views
1

Ich versuche, eine Textdatei mit mehreren Array als Spalten in dieser Datei zu erstellen. Der Trick ist, dass jedes Array einen anderen Datentyp hat. Zum Beispiel:Erstellen von Textdatei mit mehreren Arrays von gemischten Typen Python

a = np.zeros(100,dtype=np.int)+2 #integers all twos 
b = QC_String = np.array(['NA']*100) #strings all 'NA' 
c = np.ones(100,dtype=np.float)*99.9999 #floats all 99.9999 

np.savetxt('filename.txt',[a,b,c],delimiter='\t') 

Allerdings bekomme ich einen Fehler:

TypeError: Mismatch between array dtype ('|S32') and format specifier 
('%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e %.18e 
%.18e') 

Irgendwelche Ideen? Vielen Dank!

Antwort

2

Ich empfehle mit pandas, um diese Aufgabe zu erfüllen, die problemlos mehrere Datentypen beim Schreiben einer neuen Textdatei verarbeiten kann.

import numpy as np 
import pandas as pd 

# Create an empty DataFrame 
df = pd.DataFrame() 

# Populate columns in the dataframe with numpy arrays of different data types 
df['a'] = np.zeros(100, dtype=np.int)+2 
df['b'] = np.array(['NA']*100) 
df['c'] = np.ones(100, dtype=np.float)*99.9999 

# Store the data in a new text file 
df.to_csv('./my_text_file.txt', index=False) 

Öffnen der TXT-Datei zeigt nach oben:

a,b,c 
2,NA,99.999 
2,NA,99.999 
2,NA,99.999 
... 
+0

Dies scheint großartig! Gibt es eine Möglichkeit, dass es mit dieser Pandas-Methode tabulatorgetrennt anstelle von csv ist? – HM14

+0

Ja, fügen Sie einfach das 'sep =' \ t''-Argument während des Ausschreibens hinzu: 'df.to_csv ('foo.txt', index = False, sep = '\ t')' – N1B4

+0

Ok, ich denke schon ist in der Nähe, aber ich bekomme immer einen Fehler: ValueError: Länge der Werte entspricht nicht Länge des Index – HM14

Verwandte Themen