读取NDBC气象浮标41049数据生成Dataframe仅单列问题求助
核心问题原因
- Python字符串为不可变类型,你调用
re.sub()、','.join()的返回值未重新赋值给string_data,原变量仍为原始空格分隔格式,使用sep=","读取时所有内容会被识别为同一列。 - 所写正则表达式
\string_data+逻辑完全错误,无法匹配文本中的空白字符,替换操作无效。 - 使用BeautifulSoup解析纯文本气象数据属于多余操作,该接口返回内容本身为纯结构化文本,无需HTML解析。
修复方案
方案1:修正原有转CSV逻辑
import requests import shlex import pandas as pd import io resp = requests.get("https://www.ndbc.noaa.gov/data/realtime2/41049.spec") string_data = resp.text # 将处理后的结果赋值给新变量 processed_data = ','.join(shlex.split(string_data)) df = pd.read_csv(io.StringIO(processed_data), sep=",") print(df)
方案2:更简洁的原生读取方案(无需转格式)
该数据源本身为空白分隔的结构化数据,可直接通过pandas匹配任意长度空白作为分隔符读取,无需额外做字符替换:
import requests import pandas as pd import io resp = requests.get("https://www.ndbc.noaa.gov/data/realtime2/41049.spec") # sep='\s+'匹配任意长度空白,skiprows=[1]跳过第二行的单位说明行,可按需调整 df = pd.read_csv(io.StringIO(resp.text), sep='\s+', skiprows=[1]) print(df)
内容的提问来源于stack exchange,提问作者JRii
相关产品推荐
相关产品推荐

