首页 > 解决方案 > Pandas 的羽毛格式在写一列 None 时很慢

问题描述

我正在测试羽毛格式作为存储熊猫 DataFrame 文件的一种方式。在编写完全由 None 组成的列时,feather 的性能似乎非常差(info() 给出 0 个非空对象)。以下代码很好地封装了这个问题:

    df1 = pd.DataFrame(data={'x': 1000*[None]})
    %timeit df1.to_feather('.../x.feather')
    5.35 s ± 303 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
    %timeit df1.to_pickle('.../x.pkl')
    734 ms ± 60.4 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
    %timeit df1.to_parquet('.../x.parquet')
    200 ms ± 5.84 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)

我正在使用羽毛格式 0.4.0、熊猫 0.23.4 和 pyarrow 0.13.0。

我怎样才能让这些类型的 DataFrames 保存而不需要永远?

标签: pythonpandaspyarrowfeather

解决方案


您可以尝试添加特定的 dtype。话虽如此,就羽毛性能有多差而言,这些数字有点令人惊讶。


推荐阅读