Ошибка чтения пустого файла паркета в качестве фрейма данных pandas

#python #pandas #parquet #pyarrow

Вопрос:

Благодаря предложению @TDrabas я немного больше изучил свою проблему. Обновил свой вопрос, как показано ниже:

У меня есть фрейм данных, как показано ниже:

 import pandas as pd import pyarrow as pa import pyarrow.parquet as pq  df = pd.DataFrame([[1]]) df.index = pd.MultiIndex.from_tuples([('a','b','c')], names=["column1", "column2", "column3"]) df.columns = pd.MultiIndex.from_tuples([('a','b','c')], names=["column1", "column2", "column3"])  # narrow down to empty df df = df.loc[[], []] table = pa.Table.from_pandas(df) pq.write_table(table, 'my_table.parquet')  # the following breaks pd.read_parquet('my_table.parquet')  # the following works fine table=pq.read_table('my_table.parquet') table # pyarrow.Table # column1: null # column2: null # column3: null # metadata table.shape # (0, 3)  

pd.read_parquet выдает ошибку

 File "lib/python3.6/site-packages/pyarrow/pandas_compat.py", line 1071, in lt;listcompgt;  for level, col_index in zip_longest( AttributeError: 'dict' object has no attribute 'dtype'  

Я нашел решение, чтобы справиться с этим, но есть ли более элегантный способ, чем этот?

 df = df.loc[[]] # instead of df.loc[[], []]  

Комментарии:

1. можете ли вы получить имена столбцов из таблицы? тогда, возможно, pd.DataFrame(столбцы=[yourcolumns]). Должен просто дать вам пустой фрейм данных.

2. Каков ваш результат print(pd.__version__) ? Я не могу воспроизвести ошибку

3. Являются 'my_file.parquet' ли и 'my_table.parquet' те же файлы? Кроме того, какую версию pyarrow и панд вы используете?

4. @TDrabas извините, да, это один и тот же файл. это была опечатка. Я только что обновил свой вопрос

5. Я только что проверил это, и у меня не было никаких проблем. Не могли бы вы поделиться информацией, которую я просил ранее (Python 3.6 кажется немного устаревшим), и как был создан файл?