问题
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
andcStringIO
modules are gone. Instead, import theio
module and useio.StringIO
orio.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