为什么我仍然收到一个'非类型'错误时,它应该得到解决?

2024-09-27 19:26:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在调用某些单元格可能为空的数据,并尝试根据某些条件对其进行筛选。你知道吗

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

我得到一个错误,指出'非类型'的数据是不可比的整数。为什么我在过滤掉上面第一行代码中的非类型之后仍然收到这个错误?你知道吗

编辑澄清:代码实际上是这样设置的,它从polygonapi数据馈送(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”(返回符号)或“prevDay”(返回前一天打开、高、低或关闭)。你知道吗

我认为问题在于,并非所有股票都填充了“marketcap”数据字段,因此遍历它们会返回“NoneType”错误消息。我是在内存中输入的,所以没有准确的错误信息,但稍后会更新。你知道吗


Tags: 数据none类型dataifis错误not
1条回答
网友
1楼 · 发布于 2024-09-27 19:26:46

我猜data是某种类型的iterable(list,dataframe,matrix)。 如果这是真的,那么第一个条件是将数据与无进行比较。任何一个iterable,即使是只包含None的也不是None。所以第一个条件是真的。你知道吗

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

如果这确实是一个numpy数组,那么请使用numpy方法:

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

相关问题 更多 >

    热门问题