2016-03-20 6 views
0

eine folgende Datensatz haben, die unterschiedliche Säulenlängen hat:genfromtxt Verwendung in Daten mit anderen Spalte zu lesen Längen

5.0  0.4  0.92 11.45 44.18 33.66 
3.2  4.92 7.2  11.73 46.98 118.63 
3.6  11.43 14.32 8.88 71.3 
1.99 9.12 11.71 15.56 20.24 
0.77 21.92 2.47 33.99 80.68 
0.91 4.32 14.6 15.69 127.8 
2.67 2.1  5.14 7.96 46.88 
0.76 0.44 5.46 71.13 16.62 
3.52 1.15 6.21 31.84 10.33 
0.93 2.29 0.83 58.0 18.32 
0.56 1.61 5.09 20.07 10.1 
0.02 1.23 5.95 16.24 
1.5  3.23 4.21 18.9 

habe ich versucht, mit genfromtxt, aber es wird in den Daten nur die erste Zeile zurückkehrt.

data = np.genfromtxt(filename,dtype=float,usecols=range(6)) 

Gibt es ein Argument, dass ich vermisse, dass ich nicht weiß, dass das beheben kann? Wenn ich das Argument usecols nicht verwende, werden die Daten stattdessen als eine Spalte zurückgegeben. Das Setzen von delimiter = '' ergab das gleiche Ergebnis. Idealerweise würde ich gerne die Daten einlesen und dann für jede Spalte trennen.

Antwort

1

Numpy Array muss regulär sein, also genfromtxt ist nicht dafür getan. für solcher Daten ist pandas wahrscheinlich einfacher zu bedienen, fehlende Werte mit NaN standardmäßig Füllung:

In [7]: df.pd.read_csv('file.txt',sep=' *',engine='python',header=None) 
Out[7]: 
     0  1  2  3  4  5 
0 5.00 0.40 0.92 11.45 44.18 33.66 
1 3.20 4.92 7.20 11.73 46.98 118.63 
2 3.60 11.43 14.32 8.88 71.30  NaN 
3 1.99 9.12 11.71 15.56 20.24  NaN 
4 0.77 21.92 2.47 33.99 80.68  NaN 
5 0.91 4.32 14.60 15.69 127.80  NaN 
6 2.67 2.10 5.14 7.96 46.88  NaN 
7 0.76 0.44 5.46 71.13 16.62  NaN 
8 3.52 1.15 6.21 31.84 10.33  NaN 
9 0.93 2.29 0.83 58.00 18.32  NaN 
10 0.56 1.61 5.09 20.07 10.10  NaN 
11 0.02 1.23 5.95 16.24  NaN  NaN 
12 1.50 3.23 4.21 18.90  NaN  NaN 

Sie kommen zurück zu numpy Arrays mit df.values.

+0

Danke das ist in der Datei richtig lesen! Wenn ich jedoch df.values ​​verwende, gibt die erste Spalte einen Fehler von 'Objekt-Arrays werden derzeit nicht unterstützt (a = df [0] .values). Die letzten fünf Spalten geben jedoch Listen zurück. Weißt du, was diesen Fehler verursacht? – V22

+0

df ist ein Datenframe, a = df.value ist ein Array. a [0] ist die erste Zeile, der Zugriff auf Dataframe ist esoterisch. (df.loc [0] für die erste Zeile.) –

Verwandte Themen