StringIO - это объектоподобный строковый буферный объект, который мы используем при чтении кадра данных pandas из текста, например, «Как создать Pandas DataFrame из строки?»
Какойиз этих двух импортов мы должны использовать для StringIO (внутри панд)? Это длительный вопрос, который никогда не решался в течение четырех лет.
StringIO.StringIO
(Python 2) /io.StringIO
(Python 3) - Преимущества: более стабильный для будущего кода, но заставляет нас переходить к версии, например, см. Код внизу от EmilH.
pandas.compat.StringIO
- pandas.compat - это пакет совместимости 2/3 («без необходимости 2to3»), представленный еще в версии 0.13.0 (январь 2014 г.)
- Пакет pandas.compat по-прежнему помечен как «приватный» с 0.22, и не планируется делать «публичным» говорит "Предупреждение Модули верхнего уровня pandas.core, pandas.compat и pandas.utilсчитается ЧАСТНЫМ. Стабильность функциональности в этих модулях не гарантируется. " хотяпо сути, они не сломались, поскольку 0.13
- pandas.compat source определяет импорт
builtins, StringIO/cStringIO, BytesIO, cPickle, httplib
, версии итератора range, filter, map и zip, а также другие необходимые элементы для совместимости с Python 3- см. 0.13.0 whatsnew
Версия 2/3 кода разветвления для импорта из стандартных (из EmilH):
import sys
if sys.version_info[0] < 3:
from StringIO import StringIO
else:
from io import StringIO
# Note: but this is very much a poor-man's version of pandas.compat, which contains much much more
Примечание: