我正在尝试从美国国家海洋与大气协会(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]
答案 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