【问题标题】:Save a pandas dataframe with a column with 2d arrays as a parquet file in python将带有二维数组的列的熊猫数据框保存为python中的镶木地板文件
【发布时间】:2019-05-22 23:16:01
【问题描述】:

我正在尝试使用 pd.to_parquet(df).df 将 pandas 数据框保存到镶木地板文件中,这是一个具有多列的数据框,其中一列在每一行中填充了 2d 数组。当我这样做时,我收到来自pyarrow 的错误,抱怨只支持一维数组。我用谷歌搜索,似乎没有解决方案。我只是想确认实际上没有解决方案,我必须以某种方式用一维数组表示我的二维数组。

【问题讨论】:

    标签: python arrays pandas parquet


    【解决方案1】:

    pyarrow / parquet 有这个不存储二维数组的限制是正确的。

    但是,parquet(和箭头)支持嵌套列表,您可以将二维数组表示为列表列表(或者在 python 中,数组数组或数组列表也可以)。因此,一种选择是将您的二维数组转换为这种格式。

    此类嵌套列表/数组工作的示例:

    In [2]: df = pd.DataFrame(
       ...:      {'a': [[np.array([1, 2, 3]), np.array([4, 5, 6])],
       ...:             [np.array([3, 4, 5]), np.array([6, 7, 8])]]})
    
    In [3]: df.to_parquet('test_nested_list.parquet') 
    
    In [4]: res = pd.read_parquet('test_nested_list.parquet')
    
    In [5]: res['a']
    Out[5]: 
    0    [[1, 2, 3], [4, 5]]
    1    [[1, 2], [3, 4, 5]]
    Name: a, dtype: object
    
    In [6]: res['a'].values
    Out[6]: 
    array([array([array([1, 2, 3]), array([4, 5, 6])], dtype=object),
           array([array([3, 4, 5]), array([6, 7, 8])], dtype=object)],
          dtype=object)
    

    【讨论】:

    猜你喜欢
    • 2017-04-25
    • 1970-01-01
    • 2021-02-28
    • 2020-11-03
    • 2018-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2019-07-18
    相关资源
    最近更新 更多