我试图在 python 中用 pandas concat() 两个 Parquet 文件。
它可以工作,但是当我尝试写入数据框并将其保存到 Parquet 文件时,它显示错误:
ArrowInvalid: Casting from timestamp[ns] to timestamp[ms] would lose data:
我检查了文档。 pandas 的 parquet 文件默认使用毫秒时间戳语法。
如何在 concat 后使用使用过的模式将 parquet 文件白色化?
这是我的代码:
import pandas as pd
table1 = pd.read_parquet(path= ('path.parquet'),engine='pyarrow')
table2 = pd.read_parquet(path= ('path.parquet'),engine='pyarrow')
table = pd.concat([table1, table2], ignore_index=True)
table.to_parquet('./file.gzip', compression='gzip')
最佳答案
自至少 v0.22
以来,Pandas 已经将未知的 kwargs 转发给底层的 Parquet 引擎。因此,使用 table.to_parquet(allow_truncated_timestamps=True)
应该有效——我针对 pandas v0.25.0
和 pyarrow 0.13.0
验证了它。有关更多关键字,请参阅 the pyarrow docs .
关于python - 用 python 和 pandas 传输和写入 Parquet 得到时间戳错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53893554/