2017-04-06 114 views
0

晚上好!我想從txt文件創建一個數據幀,它位於https://ready.arl.noaa.gov/readyou/174479_METGRAM.TXT。該文本文件爲:如何從ARL NOAA讀取txt文件

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 

予讀出的數據,從而:

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 

我會想會得到:

 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 

我怎樣才能得到呢?

+1

請發佈一個174479_METGRAM.TXT的片段。該鏈接似乎被破壞。 – unutbu

+0

我已經提取了數據 – user1345283

回答

0

如果每列由2個或更多空格分隔,則可以使用regex pattern\s{2,}解析數據。例如,

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

如果某些列的只有他們之間1個空間,但+ 0.必須被視爲一個單一的值,那麼你可以使用正則表達式(?<![+-])\s+。這個正則表達式匹配1個或多個空格之前沒有加號或減號。因此,數字之間的單個空格可以被識別爲分隔符,但+0.之間的空格不會被視爲分隔符,因爲此空格前面有加號。

如果列由標籤分隔,則可以通過匹配1個或多個選項卡的正則表達式模式\t+指定列分隔符。您發佈的代碼段似乎沒有使用製表符作爲分隔符,但我想我會提到這一點,以防粘貼過程中標籤以某種方式轉換爲空格。