为什么在应该解决时我仍然收到 'NoneType' 错误?

Why am I still receiving a 'NoneType' error when it should be resolved?

我正在调用某些单元格可能为空白的数据,并尝试根据特定条件对其进行过滤。

if data is not None:
   if data <= 50000:
     print(data)

我收到一条错误消息,指出 'NoneType' 数据无法与整数进行比较。为什么在用上面第一行代码过滤掉 NoneTypes 后,我仍然收到此错误?

编辑澄清:代码实际上是这样设置的,它从多边形 api 数据馈送 (https://polygon.io/docs/#getting-started) 中提取数据。

tickers = api.polygon.all_tickers()
for ticker in tickers:
   if ticker.prevDay['c'] >= 20:
     company = api.polygon.company(ticker.ticker)
     if company.marketcap is not None:
        if company.marketcap <= 500000000:
           print(ticker.ticker)

这将从数据馈送中获取所有可用股票,这些股票具有某些属性,例如 "ticker"(returns 符号)或 "prevDay"(returns 前一天开盘,最高价、最低价或收盘价)。

我认为问题在于并非所有股票都填充了 'marketcap' 数据字段,因此对它们进行迭代 returns 'NoneType' 错误消息。我是凭记忆输入的,所以手边没有确切的错误消息,但稍后会更新。

我猜 data 是某种可迭代的(列表、数据框、矩阵)。 如果是这样,那么第一个条件就是将数据与 None 进行比较。任何可迭代对象,即使只包含 None 的对象也不是 None。所以第一个条件为真。

但是第二个条件(如果 data 是一个 numpy 数组)是逐元素的。所以我猜测 numpy 数组中的一个或多个元素是 None,这就是它失败的原因。

如果这真的是一个 numpy 数组,那么用 numpy 的方式来做:

data_nonnan = data[np.where(~np.isnan(data))]
print(data_nonnan[data_nonnan < 50000])