【问题标题】:Format to cleanly save and restore DataFrame? [duplicate]格式化以干净地保存和恢复 DataFrame? [复制]
【发布时间】:2016-12-20 00:08:21
【问题描述】:

我想将 pandas 表保存在一个文件中,以便稍后从该文件中读取它。我的要求:

  • 文件格式应具有良好的可移植性(Windows/Linux 上的主要语言库支持良好)

  • 我读取的DataFrame应该和我保存的完全一致

根据this post,如果我提供index_col=0 参数,read_csvto_csv 可能会起作用,但是数据类型会丢失(当然,自动类型推断并不能保证给我相同的类型@ 987654322@,更不用说我是否使用了像 lists 这样的 python 对象,这些对象永远不会被推断出来)。

是否有一些简单的解决方案可以确保工作,而不必担心许多边缘情况?

我能想到的唯一解决方案是使用to_csv / read_csv,但将类型信息保存在其他地方。不过,恐怕还有更多隐藏的问题(例如重复的列名等)。

【问题讨论】:

  • @tzaman 我想它是相关的,但是这个问题集中在速度上,而在我的情况下,顶级/接受的答案是完全不合适的,因为我正在寻找可移植性。 (pickle文件不能在python之外读取,不容易)。
  • 同样的答案也提到了hdf5。这不满足吗?
  • @piRSquared 是的,刚刚检查过,它可以工作。 (除了不允许的同名列,但没关系。)我在文档中没有看到任何保证 HDF5 读/写是可逆的,但我想它恰好是..
  • 我经常使用它。它非常快速且便携。唯一我无法验证的是来自其他语言的强大支持。但我确实在 wikipedia 上看到它得到了广泛的支持。
  • @piRSquared 是的,绝对完美的解决方案。

标签: python-3.x pandas dataframe


【解决方案1】:

pd.DataFrame.to_pickle / pd.read_pickle 保存列数据类型。让我们来看看:

df_in.to_pickle('input_5')
df_out = pd.read_pickle('/input_5')

【讨论】:

    猜你喜欢
    • 2013-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-18
    相关资源
    最近更新 更多