2017-04-06 104 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+指定列分隔符。您发布的代码段似乎没有使用制表符作为分隔符,但我想我会提到这一点,以防粘贴过程中标签以某种方式转换为空格。