晚上好!我想从txt文件创建一个数据框,它位于https://ready.arl.noaa.gov/readyou/174479_METGRAM.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
我怎么能得到这个?
答案 0 :(得分: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.
之间的空格不会被视为分隔符,因为此空格前面带有加号。
如果列由制表符分隔,则可以通过正则表达式模式\t+
指定列分隔符,该模式匹配1个或更多选项卡。您发布的代码段似乎没有使用制表符作为分隔符,但我想我提到这一点,以防标签在粘贴过程中以某种方式转换为空格。