首页 > 解决方案 > 我们应该使用 pandas.compat.StringIO 还是 Python 2/3 StringIO?

问题描述

StringIO 是我们在从文本中读取 pandas 数据帧时使用的类文件字符串缓冲区对象,例如“如何从字符串创建 Pandas 数据帧?”

我们应该将这两个导入中的哪一个用于 StringIO(在 pandas 中)?这是一个长期存在的问题,四年多来从未得到解决。

  1. StringIO.StringIO(Python 2) / io.StringIO(Python 3)
    • 优点:更稳定的面向未来的代码,但迫使我们进行版本分叉,例如参见 EmilH 底部的代码。
  2. pandas.compat.StringIO

从标准(来自 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

笔记:

标签: pandasimportbackwards-compatibilitystringiopython-2to3

解决方案


我知道这是一个老问题,但我在这里关注了面包屑,所以也许仍然值得回答。这不是完全确定的,但当前的 Pandas 文档建议使用内置StringIO方法而不是它自己的内部方法。

对于使用StringIO该类的示例,请确保from io import StringIO为 Python 3 导入它。


推荐阅读