遍歷列表循環錯誤幫助 - Yfinance

特雷弗·塞伯特

我創建了一個股票代碼列表,我試圖通過 Yfinance 獲取某些信息。我面臨的問題是試圖在一個腳本中獲取某些數據,例如 ebitda、企業價值和總資產。我查看了大量材料並嘗試了不同的方法,但我無法弄清楚。

祝你有美好的一天。謝謝!

適用於一個請求的程序

import pandas as pd
import numpy as np
import yfinance as yf

tickers = ['AAPL', 'GOOGL', 'FB']
a = [yf.Ticker(t).info.get('ebitda', 'NaN') for t in tickers]

pd.set_option("display.max_rows", None)
df = pd.DataFrame(a, tickers, columns=['Ebitda'])
print(df)

輸出

             Ebitda
AAPL   120233000960
GOOGL   85196996608
FB      54758998016

這是我正在嘗試做的事情,我需要幫助。此腳本導致df 變量init () TypeError(對於熊貓數據框)

import pandas as pd
import numpy as np
import yfinance as yf

tickers = ['AAPL', 'GOOGL', 'FB']

for t in tickers:
    a = yf.Ticker(t).info.get('ebitda', 'NaN')
    b = yf.Ticker(t).info.get('enterpriseValue', 'NaN')
    c = yf.Ticker(t).info.get('totalAssets', 'NaN')


pd.set_option("display.max_rows", None)  
df = pd.DataFrame(a, tickers, b, c, columns=['Ebitda', 'EnterpriseValue', 'TotalAssets',])
print(df)

期望輸出

Ticker       Ebitda    Enterprise Value    TotalAssets
AAPL   120233000960    2460000000000       323890000000
GOOGL   85196996608    1980000000000       275909000000
FB      54758998016     833000000000       133376000000

簡單

如果您使用for-loop 然後使用正常分配,a = ...您只能獲得最後一個值。

這是標準規則:如果您使用for-loop 那麼您必須使用list來獲取所有結果。

順便說一句:您Ticker(t)只能在循環中運行一次 - 也許它會運行得更快。

import pandas as pd
import yfinance as yf

tickers = ['AAPL', 'GOOGL', 'FB']

column_a = []  # <-- list for all results
column_b = []  # <-- list for all results
column_c = []  # <-- list for all results

for t in tickers:
    print('---', t, '---')
    
    all_info = yf.Ticker(t).info

    a = all_info.get('ebitda', 'NaN')
    b = all_info.get('enterpriseValue', 'NaN')
    c = all_info.get('totalAssets', 'NaN')
    
    column_a.append(a)  # <-- list for all results
    column_b.append(b)  # <-- list for all results
    column_c.append(c)  # <-- list for all results

#pd.set_option("display.max_rows", None)

df = pd.DataFrame({
    'Tickets': tickers,
    'Ebitda': column_a,           # <-- list for all results
    'EnterpriseValue' :column_b,  # <-- list for all results
    'TotalAssets': column_c,      # <-- list for all results
})
print(df)

編輯:

最終你可以直接附加到 DataFrame

首先,您必須創建空DataFrame但包含所有列。

接下來,您可以使用ignore_index=True. 並且DataFrame您必須再次將其分配給DataFrame-df = df.append(...)

import pandas as pd
import yfinance as yf

tickers = ['AAPL', 'GOOGL', 'FB']

df = pd.DataFrame(columns=['Tickets', 'Ebitda', 'EnterpriseValue', 'TotalAssets'])

for t in tickers:
    print('---', t, '---')
    
    all_info = yf.Ticker(t).info
    
    a = all_info.get('ebitda', 'NaN')
    b = all_info.get('enterpriseValue', 'NaN')
    c = all_info.get('totalAssets', 'NaN')
  
    df = df.append({
        'Tickets': t,
        'Ebitda': a,
        'EnterpriseValue': b,
        'TotalAssets': c,
    }, ignore_index=True)  

#pd.set_option("display.max_rows", None)
    
print(df)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章