导入URL数据归一索引-Python

时间:2018-10-08 20:09:02

标签: python urllib

我正在尝试从美国国家海洋与大气协会(National Oceanic and Atmospheric Association)导入数据。数据可以txt格式手动下载,但我想通过Python的urlopen下载。导入数据后,所有列和行都在单个索引列内,而不是带有标题的标准数据框。任何信息都有帮助。

import pandas as pd
from urllib.request import urlopen

url = "https://www.ndbc.noaa.gov/view_text_file.php?filename=42887h2014.txt.gz&dir=data/historical/stdmet/"
#df = pd.read_csv(url, header=NONE, sep='\s+')
data_csv = urlopen(url)
df2014 = pandas.read_csv(data_csv, index_col=0, parse_dates=True)

df2014.head()

结果:

df2014.head()
Out[26]: 
Empty DataFrame
Columns: []
Index: [#yr  mo dy hr mn degT m/s  m/s     m   sec   sec degT   hPa  degC  degC  degC   mi    ft, 2014 01 01 00 00  61  7.4 99.0  1.12  4.34 99.00 999 9999.0  19.2 999.0  12.5 99.0 99.00, 2014 01 01 00 20  60  7.8 99.0  1.12  4.34 99.00 999 9999.0  19.4 999.0  12.9 99.0 99.00, 2014 01 01 00 40  66  7.8 99.0  1.12  4.34 99.00 999 9999.0  19.3 999.0  13.0 99.0 99.00, 2014 01 01 01 00  76  8.6 99.0  1.18  4.49 99.00 999 9999.0  19.4 999.0  13.3 99.0 99.00]

2 个答案:

答案 0 :(得分:1)

这里的问题是,链接的数据源没有通过逗号分隔其数据,而是使用空格分隔了它们。默认情况下,read_csv库中的pandas方法以逗号为分隔符读取数据。

解决方案就是通过将delim_whitespace中的read_csv参数设置为True来将分隔符设置为空白,例如:

df2014 = pd.read_csv(data_csv, delim_whitespace=True, index_col=0, parse_dates=True)

答案 1 :(得分:0)

pandas.read_csv使用','作为默认分隔符。您的列由空格分隔。您可以通过添加sep='\s+'(如在注释行中所做的那样)或将delim_whitespace=True作为关键字参数来告诉熊猫使用空格作为分隔符。 您可以在api中找到这两个参数的详细说明:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html