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:
StringIO
和cStringIO
模块已消失。相反,导入io
模块并分别使用io.StringIO
或io.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:全局名称'...'未定义[重复]
Python - NameError:名称 itemgetter 未定义