我正在尝试使用 Pandas 和 Pyarrow 来拼花数据。我有数百个 parquet 文件不需要具有相同的模式,但如果列在 parquet 之间匹配,它们必须具有相同的数据类型。
我遇到了结果拼花数据类型不是我想要的情况。例如,我可能会int64
在列中写入一个,然后生成的镶木地板将采用double
格式。这在处理方面造成了很多麻烦,其中 99% 的数据输入正确,但在 1% 的情况下,它只是错误的类型。
我尝试过导入 numpy 并以这种方式包装这些值-
import numpy as np
pandas.DataFrame({
'a': [ np.int64(5100), np.int64(5200), np.int64(5300) ]
})
但是我仍然偶尔会得到双倍,所以这一定是错误的方法。如何确保 parquet 文件中各列的数据类型一致?
更新-
我发现只有当列包含一个或多个None
s 时才会发生这种情况。
data_frame = pandas.DataFrame({
'a': [ None, np.int64(5200), np.int64(5200) ]
})
parquet 不能处理混合的 None-int64 cols 吗?