Python функция перестает работать после нескольких итераций - PullRequest
1 голос
/ 21 февраля 2020
from yahoo_fin.stock_info import *
n=0
Ptf_opp_2=[]
lenght_2=len(Ptf_opp)

def step2():
    for n in range(0,lenght_2):
        Bs=get_balance_sheet(Ptf_opp[n])
        tca=Bs.loc[Bs.get('Breakdown').str.match('Total Current Assets')]
        tl=Bs.loc[Bs.get('Breakdown').str.match('Total Liabilities')]
        tcl=Bs.loc[Bs.get('Breakdown').str.match('Total Current Liabilities')]
        if (tca.iloc[0,1] != None and \
            tca.iloc[0,1] != '-' and \
            tl.iloc[0,1] != None and \
            tl.iloc[0,1] != '-' and \
            tcl.iloc[0,1] != None and \
            tcl.iloc[0,1] != '-' and \
            (float(tcl.iloc[0,1]) / float(tca.iloc[0,1])) < 1.1 and\
            (float(tca.iloc[0,1]) / float(tl.iloc[0,1])) > 1.5):
            Ptf_opp_2.append(Ptf_opp[n]) 
step2()

Привет всем, я новичок в python, я пытаюсь создать код для экзамена в университете, это часть моего проекта, он выполняется, но после некоторых итераций, Bs=get_balance_sheet(Ptf_opp[n]) перестает работать (на самом деле это работает, но просто создает фрейм данных [0,0], который бесполезен и не верен).

Цель кода - создать новый фрейм данных после проверки того, что тикер содержится в Ptf_opp[n] удовлетворяет граничному условию ниже.

Кроме того, если у кого-то есть какие-либо советы по улучшению моего кода, я буду признателен.

1 Ответ

0 голосов
/ 21 февраля 2020

Не делайте: from yahoo_fin.stock_info import *

Делайте: from yahoo_fin import stock_info

stock_info.get_balance_sheet, затем указывает, откуда приходит функция

Я иду предположить, что вы используете ограничение скорости использования API, при условии, что эта функция на самом деле связывается с Yahoo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...