Python pandas NameError:未定义StringIO

Posted

技术标签:

【中文标题】Python pandas NameError:未定义StringIO【英文标题】:Python pandas NameError: StringIO is not defined 【发布时间】: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

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

【问题讨论】:

Should we use pandas.compat.StringIO or Python 2/3 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

【讨论】:

以上是关于Python pandas NameError:未定义StringIO的主要内容,如果未能解决你的问题,请参考以下文章

Python/Pandas HDF5 NameError 问题

python:NameError:全局名称'...'未定义[重复]

NameError:名称'python'未定义[关闭]

Python - NameError:名称 itemgetter 未定义

Python 3:NameError:未定义名称“sklearn”

NameError:未定义全局名称“PermissionError”(python 2.x)