StringIO は、テキストから pandas データフレームを読み取るときに使用するファイルのような文字列バッファー オブジェクトです。たとえば、「文字列から Pandas DataFrame を作成する方法は?」
StringIO (pandas 内) には、これら 2 つのインポートのどちらを使用する必要がありますか? これは、4 年以上解決されていない長期にわたる問題です。
StringIO.StringIO
(パイソン 2) /io.StringIO
(パイソン 3)- 利点: コードの将来性を保証するためにはより安定していますが、バージョン フォークを余儀なくされます。たとえば、EmilH の下部にあるコードを参照してください。
pandas.compat.StringIO
- pandas.compat は、0.13.0 (2014 年 1 月) に導入された 2/3 互換パッケージ (「2to3 を必要としない」) です。
- pandas.compatパッケージは 0.22 の時点でまだ「プライベート」とマークされており、「パブリック」にする予定はありませんこれらのモジュールでは保証されません。」0.13以降、基本的に壊れていませんが
- pandas.compat ソースは、インポート
builtins, StringIO/cStringIO, BytesIO, cPickle, httplib
、範囲、フィルター、マップ、および 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
ノート:
pandas.compat
pandas 0.13.0 (2014 年 1 月) 以降、pandas 内のサブパッケージとして存在- スタンドアロン パッケージとしてもリリースされているようです: 0.1.0 (2017 年 6 月 10 日) および 0.1.1 (2017 年 6 月 10 日)