我怎样才能得到不支付股息的公司名单?

How might I get the list of firms that do not pay dividends?

以下代码旨在缩小 public 公司的代码列表 余额中有比特币的 sheet(存储在 list_of_tcks 中)到不支付股息的那些(存储在 leanCompanies 中)。

#!/usr/bin/env python3

from yfinance import pdr_override, Ticker
    
def give_me_list_of_no_div_payers(list_of_tcks):
    list_refined = []
    list_of_payers = []
    for t in list_of_tcks:
        if len(Ticker(t).dividends) < 1:
            list_refined.append(t)
        elif len(Ticker(t).dividends) > 0:
            list_of_payers.append(t)            
    return (list_refined, list_of_payers) 

def print_stock_div(ticker):
    print(f"{ticker}:")
    print(Ticker(ticker).dividends)

    
list_of_tcks = ['MSTR', 'TSLA', 'BRPHF', 'VOYG', 'MARA', 'SQ', 'HUT', 'RIOT', 'BITF', 'CORZ', 'COIN', 'BTGGF', 'HIVE', 'ARBKF', 'NEXOF', '', 'BROOK', 'HKD', 'BTBT', 'HSSHF', 'BBKCF', 'DMGGF', 'CLSK', 'HODL', 'ABT', 'DGGXF', 'NPPTF', 'CBIT', 'MELI', 'OTC', 'BNXAF', 'PHUN', 'BTCS', 'FRMO', 'SATO', 'MILE', 'MOGO', 'NTHOL TI']
print(list_of_tcks)
print(len(list_of_tcks))

leanCompanies = give_me_list_of_no_div_payers(list_of_tcks)[0]    
print(leanCompanies)   
fatCompanies = give_me_list_of_no_div_payers(list_of_tcks)[1]     
print("Following is the detailed info on the dividends of the fat companies:") 
for t in fatCompanies:
    print(f"{t}:")
    print(Ticker(t).dividends)

我注意到当有支付股息的积极历史时 Ticker(t).dividends 的类型是 pandas.core.series.Series。 当公司从未支付 Ticker(t).dividends 类型的股息时 是 pandas.core.series.Serieslist.

1.为什么会有这两种?

2. 测试 len(Ticker(t).dividends) 的价值是否是获取不支付股息的公司名单的可靠方法?

3.有没有其他方法可以得到这样的列表?

  1. 两种类型的原因是因为部分代码没有找到。如果您阅读 [0] 打印行的输出,您会看到 return - <ticker>: No data found, symbol may be delistedlistpd.Series 其中股票代码可用,但没有股息。
  2. 是的,使用 len(Tickers(t).dividends) 是明智的,此输出对于列表中的每个代码都是正确的。
  3. 您的 elif: 不需要条件,您可以使用 else: 代替。由于股息的长度要么是 0(在 list_refined 中),要么不是(在 list_of_payers 中)。因此,您可以使用以下代码清理代码:

#选项 1

def give_me_list_of_no_div_payers(list_of_tcks):
    list_refined = []
    list_of_payers = []
    for t in list_of_tcks:
        if len(Ticker(t).dividends) == 0:
            list_refined.append(t)
        else:
            list_of_payers.append(t)

    return (list_refined, list_of_payers)

#选项 2 - 列表理解

def give_me_list_of_no_div_payers_2(list_of_tcks):
    list_refined = []
    list_of_payers = []
    [list_refined.append(t) \
     if len(Ticker(t).dividends) == 0 \
         else list_of_payers.append(t) \
             for t in list_of_tcks ]
    
    return [list_refined, list_of_payers]

除此之外我不知道!