繁体   English   中英

为什么我在应该解决时仍然收到“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 后,我仍然收到此错误?

编辑澄清:代码实际上是这样设置的,它从 Polygon 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)

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

我认为问题在于并非所有股票都填充了“市值”数据字段,因此对它们进行迭代会返回“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])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM