2017-04-06 2 views
0

Guten Abend! Ich möchte einen Datenrahmen aus TXT-Datei erstellen und es ist auf https://ready.arl.noaa.gov/readyou/174479_METGRAM.TXT. Die Textdatei ist:So lesen Sie die TXT-Datei von ARL NOAA

HR    
0  + 0. 13.0 3.3 51.50 0.0 97.4 0.0 0.0 7.0   
1  + 3. 21.7 4.8 33.00 0.0 90.5 0.0 0.0 4.8   
2  + 6. 30.6 0.3 14.30 0.0 57.8 0.0 0.0 3.3 
.  
.  
51 +153. 31.2 -2.3 11.3 0.00 5.1 20.1 -0.9 1.7 
52 +156. 28.5 -0.5 15.2 0.00 12.2 86.0 -4.5 1.4 

Ich lese Daten so:

df = pd.read_table (‘https://ready.arl.noaa.gov/readyou /174479_METGRAM.TXT',skiprows=1,sep='\s+',header=None)

 0  1  2  3  4  5  6  7  8  9   
0 +  0.0 13.0 3.3 51.50 0.0 97.4 0.0 0.0 7.0   
1 +  3.0 21.7 4.8 33.00 0.0 90.5 0.0 0.0 4.8   
2 +  6.0 30.6 0.3 14.30 0.0 57.8 0.0 0.0 3.3  
.   
.   
. 
51 +153. 31.2 -2.3 11.3 0.00 5.1 20.1 -0.9 1.7 NaN 
52 +156. 28.5 -0.5 15.2 0.00 12.2 86.0 -4.5 1.4 NaN 
53 +159. 17.6 1.9 34.9 0.17 0.5 126.2 -26.3 5.6 NaN 

ich werde wie dieses erhalten:

 0  1  2  3  4  5  6  7  8    
0 +0.0 13.0 3.3 51.50 0.0 97.4 0.0 0.0 7.0   
1 +3.0 21.7 4.8 33.00 0.0 90.5 0.0 0.0 4.8   
2 +6.0 30.6 0.3 14.30 0.0 57.8 0.0 0.0 3.3  
.   
.   
. 
51 +153. 31.2 -2.3 11.3 0.00 5.1 20.1 -0.9 1.7 
52 +156. 28.5 -0.5 15.2 0.00 12.2 86.0 -4.5 1.4 
53 +159. 17.6  1.9 34.9 0.17 0.5 126.2 -26.3 5.6 

wie kann ich diese bekommen?

+1

Bitte senden Sie ein Schnipsel von 174479_METGRAM.TXT. Der Link scheint unterbrochen zu sein. – unutbu

+0

Ich habe einen Auszug der Daten gelegt – user1345283

Antwort

0

Wenn jede Spalte durch zwei oder mehr Leerzeichen getrennt ist, können Sie die Daten mit der regex pattern\s{2,} analysieren. Zum Beispiel zwischen ihnen

df = pd.read_table('https://ready.arl.noaa.gov/readyou /174479_METGRAM.TXT', 
        skiprows=1, sep='\s{2,}',header=None) 

Wenn einige der Spalten haben nur 1 Raum und noch + 0. muss als einzigen Wert erkannt wird, dann könnte man die RegexMuster (?<![+-])\s+ verwenden. Diese Regex entspricht 1 oder mehr Leerzeichen nicht vorangestellt von ein Plus- oder Minuszeichen. Somit kann ein einzelner Zwischenraum zwischen Zahlen als Trennzeichen erkannt werden, aber der Abstand zwischen + und 0. wird nicht als Trennzeichen betrachtet, da diesem Leerzeichen ein Pluszeichen vorangestellt ist.

Wenn die Spalten durch Tabulatoren getrennt sind, können Sie den Spaltentrenner mit dem Regex-Muster \t+ angeben, das mit 1 oder mehr Registerkarten übereinstimmt. Der Snippet, den Sie gepostet haben, scheint Tabs nicht als Trennzeichen zu verwenden, aber ich dachte, ich würde dies erwähnen, falls die Tabs während des Einfügens irgendwie in Leerzeichen konvertiert wurden.