Python 如何从ARL NOAA读取txt文件
晚上好!我想从txt文件创建一个数据帧,它是打开的。文本文件为:Python 如何从ARL NOAA读取txt文件,python,pandas,Python,Pandas,晚上好!我想从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
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
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
我是这样读数据的:
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
df=pd.read_表('/174479_METGRAM.TXT',skiprows=1,sep='\s+',header=None)
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
我想得到这个:
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
如何获取此信息?如果每列之间有2个或更多空格,则可以使用
\s{2,}
解析数据。比如说,
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
df = pd.read_table('https://ready.arl.noaa.gov/readyou /174479_METGRAM.TXT',
skiprows=1, sep='\s{2,}',header=None)
如果某些列之间只有1个空格,而+0。
必须被识别为单个值,则可以使用regex模式(?。此正则表达式匹配1个或多个不以加号或减号开头的空格。因此,数字之间的单个空格可以识别为分隔符,但+
和0之间的空格。
不会被视为分隔符,因为此空格前面有加号
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
如果列由制表符分隔,那么您可以通过正则表达式模式\t+
指定列分隔符,该模式匹配1个或多个制表符。您发布的代码片段似乎没有使用制表符作为分隔符,但我想我应该提一下这一点,以防在粘贴过程中制表符以某种方式转换为空格。请发布一篇文章174479_METGRAM.TXT的片段。链接似乎已断开。我已将数据摘录
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