我们应该使用 pandas.compat.StringIO 还是 Python 2/3 StringIO?
Should we use pandas.compat.StringIO or Python 2/3 StringIO?
StringIO 是我们在从文本中读取 pandas 数据帧时使用的类文件字符串缓冲区对象,例如"How to create a Pandas DataFrame from a string?"
我们应该将这两个导入中的哪一个用于 StringIO(在 pandas 内)? 这是一个长期的问题 - 运行 从未解决过四年多了。
StringIO.StringIO
(Python 2) / io.StringIO
(Python 3)
- 优点:对于面向未来的代码更稳定,但迫使我们进行版本分叉,例如请参阅 EmilH 底部的代码。
pandas.compat.StringIO
- pandas.compat is a 2/3 compatibility package ("without the need for 2to3") introduced back in 0.13.0 (Jan 2014)
- pandas.compat package is still marked 'private' as of 0.22 and no plans to make 'public' 表示 "Warning The pandas.core, pandas.compat, and pandas.util top-level modules are considered to be PRIVATE. Stability of functionality in those modules in not guaranteed." 尽管自 0.13
以来它们基本上没有损坏
- pandas.compat source 定义
导入
builtins, StringIO/cStringIO, BytesIO, cPickle, httplib
、range、filter、map 和 zip 的迭代器版本,以及 Python 3 兼容性所需的其他元素 - 请参阅 0.13.0 whatsnew
从标准(来自 EmilH)导入的版本 2/3 分叉代码:
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 中的子包存在
- 它也seems to have been released as a standalone package: 0.1.0 (Jun 10, 2017) and 0.1.1 (Jun 10, 2017)
StringIO 是我们在从文本中读取 pandas 数据帧时使用的类文件字符串缓冲区对象,例如"How to create a Pandas DataFrame from a string?"
我们应该将这两个导入中的哪一个用于 StringIO(在 pandas 内)? 这是一个长期的问题 - 运行 从未解决过四年多了。
StringIO.StringIO
(Python 2) /io.StringIO
(Python 3)- 优点:对于面向未来的代码更稳定,但迫使我们进行版本分叉,例如请参阅 EmilH 底部的代码。
pandas.compat.StringIO
- pandas.compat is a 2/3 compatibility package ("without the need for 2to3") introduced back in 0.13.0 (Jan 2014)
- pandas.compat package is still marked 'private' as of 0.22 and no plans to make 'public' 表示 "Warning The pandas.core, pandas.compat, and pandas.util top-level modules are considered to be PRIVATE. Stability of functionality in those modules in not guaranteed." 尽管自 0.13 以来它们基本上没有损坏
- pandas.compat source 定义
导入
builtins, StringIO/cStringIO, BytesIO, cPickle, httplib
、range、filter、map 和 zip 的迭代器版本,以及 Python 3 兼容性所需的其他元素 - 请参阅 0.13.0 whatsnew
从标准(来自 EmilH)导入的版本 2/3 分叉代码:
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 中的子包存在
- 它也seems to have been released as a standalone package: 0.1.0 (Jun 10, 2017) and 0.1.1 (Jun 10, 2017)