在 python 中将带有二维数组列的 pandas 数据框保存为镶木地板文件

Save a pandas dataframe with a column with 2d arrays as a parquet file in python

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

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

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

这种嵌套 lists/arrays 工作的示例:

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)