pandas 如何将新数据附加到现有的 parquet 文件?

rekjcdws  于 2023-04-28  发布在  其他
关注(0)|答案(1)|浏览(289)

我有一个 parquet 文件,里面有一些数据。我想每天频繁地向其中添加更多的数据。我想这样做,而不必将对象加载到内存中,然后再连接和写入。相反,如果文件中的表,直接追加到末尾。
我尝试使用pq.ParquetWriter()和它的write_table()方法,但是它覆盖了以前的数据。

yqhsw0fo

yqhsw0fo1#

解决方案是读取数据,然后追加,然后写回文件。
示例代码假设使用pandas和数据适合内存,如果不适合,可以使用dask

import pandas as pd
import pyarrow.parquet as pq
import pyarrow as pa

# Read the existing Parquet file
existing_df = pd.read_parquet('existing_file.parquet')

# Create a new DataFrame with new data (alternatively, read from another source)
new_data = {'column1': [value1, value2, ...],
            'column2': [value1, value2, ...],
            ...}

new_df = pd.DataFrame(new_data)

# Concatenate the existing DataFrame with the new DataFrame
updated_df = pd.concat([existing_df, new_df], ignore_index=True)

# Write the updated DataFrame to the same Parquet file
table = pa.Table.from_pandas(updated_df)
pq.write_to_dataset(table, root_path='existing_file.parquet', compression='snappy', use_dictionary=True)

相关问题