import pandas_datareader给出ImportError:无法导入名称'is_list_like'

Raj*_*Raj 55 python pandas pandas-datareader

我在虚拟环境中工作.我能够在没有任何错误的情况下导入和使用pandas,但是当我尝试时import pandas_datareader

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime as dt
from matplotlib import style
import pandas_datareader as web
Run Code Online (Sandbox Code Playgroud)

它给出了以下错误 -

Traceback (most recent call last):
  File "stock.py", line 6, in <module>
    import pandas_datareader as web
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/__init__.py", line 2, in <module>
    from .data import (DataReader, Options, get_components_yahoo,
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/data.py", line 14, in <module>
    from pandas_datareader.fred import FredReader
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/fred.py", line 1, in <module>
    from pandas.core.common import is_list_like
ImportError: cannot import name 'is_list_like'
(env) xxxxx@xxxxx-yyyyy ~/pyt $ python stock.py
Traceback (most recent call last):
  File "stock.py", line 6, in <module>
    import pandas_datareader
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/__init__.py", line 2, in <module>
    from .data import (DataReader, Options, get_components_yahoo,
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/data.py", line 14, in <module>
    from pandas_datareader.fred import FredReader
  File "/home/xxxxx/django-apps/env/lib/python3.5/site-packages/pandas_datareader/fred.py", line 1, in <module>
    from pandas.core.common import is_list_like
ImportError: cannot import name 'is_list_like'
Run Code Online (Sandbox Code Playgroud)

Nil*_*ils 97

不在本地更改任何文件并绕过包管理器(pip)的版本控制的解决方案是定义is_list_like,如下所示:

import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
Run Code Online (Sandbox Code Playgroud)

就在之前

import pandas_datareader as web
Run Code Online (Sandbox Code Playgroud)

此外,此问题将在pandas_datareader版本0.7.0发行版中修复.

  • 这应该是可接受的答案,因为它不需要更改任何文件. (12认同)
  • 同意,1行代码修复了问题,直到datareader 0.7准备就绪 (2认同)

小智 62

我遇到这个错误,我找到了解决它的方法.我的pandas和pandas_datareader版本分别为0.23和0.6.

Python 3.6.5 (default, Apr  1 2018, 05:46:30)
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pandas_datareader
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/dist-packages/pandas_datareader/__init__.py", line 2, in <module>
    from .data import (DataReader, Options, get_components_yahoo,
  File "/usr/local/lib/python3.6/dist-packages/pandas_datareader/data.py", line 14, in <module>
    from pandas_datareader.fred import FredReader
  File "/usr/local/lib/python3.6/dist-packages/pandas_datareader/fred.py", line 1, in <module>
    from pandas.core.common import is_list_like
ImportError: cannot import name 'is_list_like'
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

因为它is_list_like被移动到pandas.api.types,我更改了图片中突出显示的fred.py文件.我替换from pandas.core.common import is_list_likefrom pandas.api.types import is_list_like,它的工作原理.

在此输入图像描述

  • 您可以在导入``pandas_datareader``之前放置``pd.core.common.is_list_like = pd.api.types.is_list_like``,这样就不需要编辑``fred.py``. (52认同)

小智 11

这是因为is_list_like已经从Pandas 0.23.0 转移pandas.core.commonpandas.api.types了Pandas.此问题已在此处修复,并将成为Pandas Datareader 0.7.0版本的一部分.目前,我建议使用Datareader的开发版.安装说明可在文档中找到.