#pandas #apache-arrow
#pandas #apache-arrow
Вопрос:
Как я могу записать фрейм данных pandas на диск в .arrow
формате? Я хотел бы иметь возможность считывать файл arrow в Arquero, как показано здесь .
Ответ №1:
Поскольку Feather — это формат Arrow IPC, вы, вероятно, можете просто использовать write_feather
. См . http://arrow.apache.org/docs/python/feather.html
Комментарии:
1. Интересно — я попробую это. Я знал, что они очень похожи!
2. Спасибо. Я могу подтвердить, что
feather.write_feather(table, 'file.feather', compression='uncompressed')
это работает с Arquero, а также с сохранением вarrow
usingpa.ipc.new_file
. Несжатый файл feather примерно на 10% больше на диске, чем.arrow
файл. Сжатый файл feather не может быть прочитан с использованием той же методологии: observablehq.com/d/298f76ea5f91b5fe который взят из observablehq.com/@uwdata/arquero-and-apache-arrow Я загрузил файлы сюда: github.com/RobinL/arrow_test3. Правильно, реализация Arrow на JS не добавила поддержку сжатых файлов feather / arrow, поэтому вам нужно будет записать их в несжатом виде.
4. Приветствия, ребята — не удалось найти ничего в документах arrow, записных книжках или списках рассылки по этому вопросу, есть ли где-нибудь? Я предполагаю, что это связано с отсутствием поддержки браузером сжатия / распаковки javascript.
Ответ №2:
Вы можете сделать это следующим образом:
import pyarrow
import pandas
df = pandas.read_parquet('your_file.parquet')
schema = pyarrow.Schema.from_pandas(df, preserve_index=False)
table = pyarrow.Table.from_pandas(df, preserve_index=False)
sink = "myfile.arrow"
# Note new_file creates a RecordBatchFileWriter
writer = pyarrow.ipc.new_file(sink, schema)
writer.write(table)
writer.close()
Ответ №3:
Pandas может напрямую записывать фрейм данных в двоичный формат Feather.(использует pyarrow)
import pandas as pd
df = pd.DataFrame(data={'col1': [1, 2], 'col2': [3, 4]})
df.to_feather('my_data.arrow')
Дополнительные ключевые слова передаются в pyarrow.feather.write_feather(). Сюда входят ключевые слова compression, compression_level, chunksize и version .