我是Pandas读取一个csv文件,然后将其导出到按日期分区的 parquet ,效果很好
import pandas as pd
import datetime
df = pd.read_csv('box.csv',parse_dates=True)
df['SETTLEMENTDATE'] = pd.to_datetime(df['SETTLEMENTDATE'])
df['Date'] = df['SETTLEMENTDATE'].dt.date
df.to_parquet('nem.parquet',partition_cols=['Date'],allow_truncated_timestamps=True)
这是样本输出
当我再次运行该脚本时,它将生成一个新文件
Pandas中是否有选项覆盖文件,并仅在有新数据时添加新文件?
1条答案
按热度按时间gojuced71#
今天我在使用带有partition_cols的
to_parquet
时遇到了这个问题。我的解决方法是运行:这里的关键参数是
existing_data_behavior
,它:控制数据集如何处理目标中已存在的数据。默认行为为“overwrite_or_ignore”。
“overwrite_or_ignore”将忽略任何现有数据,并覆盖与输出文件同名的文件。其他现有文件将被忽略。此行为与每次写入的唯一basename_template相结合,将允许追加工作流。
如果目标中存在任何数据,则“error”将引发错误。
“delete_matching”在写入分区数据集时很有用。第一次遇到每个分区目录时,将删除整个目录。这使您可以完全覆盖旧分区。仅当use_legacy_dataset=False时才支持此选项。
运行使用:pyarrow==10.0.1