首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >赋值前引用的局部变量'df‘

赋值前引用的局部变量'df‘
EN

Stack Overflow用户
提问于 2019-11-05 09:14:02
回答 1查看 350关注 0票数 3

我不知道如何处理这个练习。

“您可以使用此模板来获取DJIA成员的调整后的收盘价。

首先,您应该在线下载DJIA成员列表。然后读取成员并在main函数中编写for循环以获取所需的数据。

提示,在get_EOD_data函数中使用‘tickers’参数“

代码语言:javascript
复制
import requests
import pandas as pd
from pandas.compat import StringIO
import numpy as np
import datetime as dt
from dateutil.relativedelta import relativedelta

def get_EOD_data(api_token='5cb671b0b4a790.35526238', session = None, tickers = 'AXP', start_date = dt.datetime(2018,1,1), end_date = dt.datetime(2018,12,31)):
    symbols = tickers
    if session is None:
        session = requests.Session()


    url = 'https://eodhistoricaldata.com/api/eod/%s.US'
    params = {"api_token": api_token, "from": start_date, "to": end_date}
    r = session.get(url, params = params)
    if r.status_code == requests.codes.ok:

        # Use the parameters index_col and usecols to control which columns you want to scrape
        df = pd.read_csv(StringIO(r.text), skipfooter = 1, parse_dates = [0], engine = 'python', na_values=['nan'])

    df.fillna(method = 'ffill', inplace = True)
    df.fillna(method = 'bfill', inplace = True)
    return df

def main():
    # Add parameters of the function get_EOD_data to control the data you want to scrape
    df_data = get_EOD_data()
    print(df_data)

if __name__ == '__main__':
    main()
代码语言:javascript
复制
Traceback (most recent call last):
  File "/Users/katewang/Desktop/Test/scrape_data.py", line 32, in <module>
    main()
  File "/Users/katewang/Desktop/Test/scrape_data.py", line 28, in main
    df_data = get_EOD_data()
  File "/Users/katewang/Desktop/Test/scrape_data.py", line 22, in get_EOD_data
    df.fillna(method = 'ffill', inplace = True)
UnboundLocalError: local variable 'df' referenced before assignment
EN

回答 1

Stack Overflow用户

发布于 2019-11-05 09:23:43

在这一节中

代码语言:javascript
复制
. . . . 

if r.status_code == requests.codes.ok:

    # Use the parameters index_col and usecols to control which columns you want to scrape
    df = pd.read_csv(StringIO(r.text), skipfooter = 1, parse_dates = [0], engine = 'python', na_values=['nan'])

df.fillna(method = 'ffill', inplace = True)
. . . 

您会注意到,变量df的赋值在条件语句中,这很可能计算为false,因为r.status_coderequests.codes.ok不是等价的

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58703137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档