Python pandas NameError: StringIO is not defined

爷,独闯天下 提交于 2019-12-06 01:41:34

问题


I am unable to read data in Pandas: Input:

import pandas as pd

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

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

Output:

NameError:name 'StringIO' is not defined

Please let me know why the error occurred and also let me know what to import.


回答1:


Found the solution here:

The error occurred because I didn't import StringIO. Unlike Python 2, in Python 3 you are required to import it.

from io import StringIO

After importing no error occurred. Output to the above question was:

   a b c
0  1 2 3
1  4 5 6

It can also be imported from pandas.compat which works for both Python 2 and 3.

from pandas.compat import StringIO



回答2:


Its because it was removed in python 3 for a better module.

From What’s New In Python 3.0:

The StringIO and cStringIO modules are gone. Instead, import the io module and use io.StringIO or io.BytesIO for text and data respectively.

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



回答3:


Try to add the below packages These packages should add this line at the beginning of your script.

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

After adding the above packages I am not getting the below error

ModuleNotFoundError: No module named 'StringIO'



回答4:


StringIO needs to be imported as import StringIO before it can be used

EDIT: link for more information: https://docs.python.org/2/library/stringio.html



来源:https://stackoverflow.com/questions/37530891/python-pandas-nameerror-stringio-is-not-defined

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!