【问题标题】:Python pandas NameError: StringIO is not definedPython pandas NameError:未定义StringIO
【发布时间】:2016-09-28 14:12:32
【问题描述】:

我无法在 Pandas 中读取数据: 输入:

import pandas as pd

data = 'a,b,c\n1,2,3\n4,5,6'

pd.read_csv(StringIO(data),skipinitialspace=True)

输出:

NameError:name 'StringIO' is not defined

请告诉我错误发生的原因,并告诉我要导入什么。

【问题讨论】:

标签: python python-3.x pandas csv stringio


【解决方案1】:

在这里找到解决方案:

发生错误是因为我没有导入StringIO。与 Python 2 不同,在 Python 3 中您需要导入它。

from io import StringIO

导入后没有出现错误。 上述问题的输出是:

   a b c
0  1 2 3
1  4 5 6

它也可以从适用于 Python 2 和 3 的pandas.compat 导入。

from pandas.compat import StringIO

【讨论】:

  • 在 Python 2 中,您还需要从不同的模块(也称为 StringIO)导入它。
【解决方案2】:

尝试添加以下包 这些包应该在脚本的开头添加这一行。

import io
from io import StringIO
import string
import pandas as pd
from pandas.compat import StringIO
from collections import Counter

try:
    from StringIO import StringIO
except ImportError:
    from io import StringIO

添加上述软件包后,我没有收到以下错误

ModuleNotFoundError: No module named 'StringIO'

【讨论】:

    【解决方案3】:

    这是因为它在 python 3 中被删除以获得更好的模块。

    来自What’s New In Python 3.0

    StringIOcStringIO 模块已消失。相反,导入io 模块并分别使用io.StringIOio.BytesIO 用于文本和数据。

    try:
        from StringIO import StringIO
    except ImportError:
        from io import StringIO
    

    【讨论】:

      【解决方案4】:

      StringIO需要导入为import StringIO才能使用

      编辑: 更多信息链接:https://docs.python.org/2/library/stringio.html

      【讨论】:

        猜你喜欢
        • 2022-08-14
        • 2018-08-06
        • 1970-01-01
        • 2017-04-20
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        • 2013-01-26
        相关资源
        最近更新 更多