0

我正在从“Python for Finance”学习 Python,并且使用的包已经过时。请帮助我解决以下错误:它显示 EmptyDataError: No columns to parse from file。

import pandas as pd
url1 = 'http://hopey.netfonds.no/posdump.php?'
url2 = 'date=%s%s%s&paper=AAPL.O&csv_format=csv'
url = url1 + url2

year = '2017'
month = '11'
days = ['9']

AAPL = pd.DataFrame()
for day in days:
    AAPL = AAPL.append(pd.read_csv(url % (year, month, day),
                                   index_col=0, header=0, parse_dates=True))

AAPL.columns = ['bid', 'bdepth', 'bdeptht','offer', 'odepth', 'odeptht']

错误:

EmptyDataError: No columns to parse from file
4

1 回答 1

1

此错误是由 Pandas 问题引起的。

  1. Pandas 将发送 GET 请求以获取文件内容。但是这个url是一个动态脚本,不直接打印内容。
  2. posdump.php脚本将发送 HTTP 响应,如:
    HTTP/1.1 200 OK
    Date: Tue, 22 May 2018 01:18:42 GMT
    Server: Apache/2.4.7 (Ubuntu)
    X-Powered-By: PHP/5.5.9-1ubuntu4.25
    Content-Disposition: attachment; filename=exams.csv
    Pragma: no-cache
    Expires: 0
    Content-Type: text/csv

这意味着内容在一个名为 的附件中发送filename exams.csv

  1. 要解决此问题,请将此问题报告给 pandas 团队。

  2. 如需解决方法,请使用requests模块将内容作为字符串获取,然后使用 pandas 读取:

    from io import StringIO

    import pandas as pd
    import requests
    url = 'https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv'
    s = requests.get(url).text    
    c = pd.read_csv(StringIO(s))
于 2018-05-22T01:25:58.970 回答