使用pandas.to_parquet保存datetime64[ns]列后转时间戳,能否原样保存?
解决pandas保存Parquet时datetime64[ns]列转为时间戳的问题
完全可以将datetime64[ns]列原样保存为Parquet文件,出现转为Unix时间戳的情况,通常是Parquet引擎或参数设置导致的,调整后即可解决:
指定正确的Parquet引擎
pandas支持pyarrow和fastparquet两种引擎,pyarrow对datetime类型的兼容性更好。保存和读取时显式指定引擎:# 保存 df.to_parquet('data.parquet', engine='pyarrow') # 读取 df_read = pd.read_parquet('data.parquet', engine='pyarrow')确认列类型正确性
保存前通过df.dtypes检查目标列是否为datetime64[ns]类型,若不是先转换:df['datetime_col'] = pd.to_datetime(df['datetime_col'])避免错误的类型指定
读取时不要强制将datetime列指定为int类型,让引擎自动推断类型即可。
Parquet格式本身支持datetime类型存储,只要配合正确的引擎和参数,就能完整保留datetime64[ns]的原始格式。
内容的提问来源于stack exchange,提问作者nightshiftman
相关产品推荐
相关产品推荐

