Сохраните файл данных pandas со столбцом с 2d массивами в виде файла паркета в python - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь сохранить фрейм данных pandas в файл паркета, используя pd.to_parquet(df). df - это фрейм данных с несколькими столбцами, и один из столбцов заполнен 2-мерными массивами в каждой строке.При этом я получаю сообщение об ошибке pyarrow с жалобой на то, что поддерживаются только одномерные массивы.Я погуглил и кажется, что нет решения.Я просто хотел подтвердить, что на самом деле решения для этого не существует, и я должен каким-то образом представить свой 2-й массив с помощью 1-го массива.

1 Ответ

1 голос
/ 24 мая 2019

Правильно, что у pyarrow / parquet есть ограничение не хранить двумерные массивы.

Но паркет (и стрелка) поддерживают вложенные списки, и вы можете представить двумерный массив в виде списка списков (или в python массив массивов или список массивов тоже подойдет).Поэтому одним из вариантов может быть преобразование ваших 2D-массивов в такой формат.

Пример работы таких вложенных списков / массивов:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...