“ NoneType”对象不可迭代-数据导入

时间:2019-11-07 09:30:14

标签: python pandas

需要一些帮助来消除此错误。这是代码-#是运行出色的原始代码,我尝试进行调整:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from genhurst import genhurst
from datetime import datetime
import pandas_datareader as pdr 


df = pdr.DataReader('BTC-USD', 'yahoo', datetime(2014,1,1), datetime(2019,10,25))

# df=pd.read_csv('inputData_USDCAD.csv')

y=df.loc[df['Adj Close']]

# y=df.loc[df['Time']==1659, 'Close']


results=adfuller(y, maxlag=1, regression='c', autolag=None)
print(results)

# Find Hurst exponent
H, pVal=genhurst(np.log(y))
print("H=%f pValue=%f" % (H, pVal))

这些是错误消息:

  

文件“”,第14行,在       y = df.loc [df ['Adj Close']]

     

文件   “ C:\ Users \ apros \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py”,   第1424行,在 getitem       返回self._getitem_axis(maybe_callable,axis = axis)

     

文件   “ C:\ Users \ apros \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py”,   第1839行,在_getitem_axis中       返回self._getitem_iterable(key,axis = axis)

     

文件   “ C:\ Users \ apros \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py”,   第1133行,在_getitem_iterable中       keyarr,indexer = self._get_listlike_indexer(key,axis,raise_missing = False)

     

文件   “ C:\ Users \ apros \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexing.py”,   第1089行,在_get_listlike_indexer中       keyarr,索引器,new_indexer = ax._reindex_non_unique(keyarr)

     

文件   “ C:\ Users \ apros \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexes \ base.py”,   第3443行,在_reindex_non_unique中       索引器,缺少= self.get_indexer_non_unique(target)

     

文件   “ C:\ Users \ apros \ Anaconda3 \ lib \ site-packages \ pandas \ core \ indexes \ base.py”,   get_indexer_non_unique中的第4801行       索引器,缺少= self._engine.get_indexer_non_unique(tgt_values)

     

文件“ pandas_libs \ index.pyx”,第295行,在   pandas._libs.index.IndexEngine.get_indexer_non_unique

     

TypeError:“ NoneType”对象不可迭代

2 个答案:

答案 0 :(得分:0)

您的代码显示您已经从 pdr.DataReader 中读取了 df

但这是很少的信息,无法说明您的错误来源。 实际上,这里阅读 df 的方式非常重要。

而是显示您的 df 的一部分。

一个重要的细节也是每列的数据类型,尤其是 用作条件字段( Adj Close )。

我想它已被读取为 string (或某些特殊类型), 但您希望在那里输入布尔值

也许您应该将 Adj Close 列中的值与一些具体值进行比较?

还要检查您的 df 是否实际上包含具有此名称的列。

答案 1 :(得分:0)

谢谢你们!!

.loc方法是问题所在,它似乎只能通过应用y = df ['Adj Close']来工作”

SELECT count(u.user_id) AS nb_users
FROM Users u
LEFT JOIN (
  SELECT sj.jobs_userid AS unfinished_user
  FROM Scheduled_Jobs sj
  LEFT JOIN Last_Update lu
    ON lu.update_jobsid = sj.jobs_id
  WHERE sj.status = 1
  AND sj.date <= CURDATE()
  AND lu.update_id IS NULL
) AS uj -- unfinished jobs
  ON u.user_id = uj.unfinished_user
WHERE u.status = 1
AND uj.unfinished_user IS NULL

BR Andreas