Pandas数据帧拼花数据类型?

2024-06-14 17:08:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用Pandas和Pyarrow来获取拼花数据。我有数百个parquet文件不需要有相同的模式,但是如果parquets中的列匹配,那么它们必须具有相同的数据类型。在

我遇到了这样的情况:最终的拼花地板数据类型不是我想要的。例如,我可以将int64写入一个列,结果拼花将是double格式。这在处理端造成了很多麻烦,99%的数据被正确输入,但在1%的情况下,它只是错误的类型。在

我尝试过导入numpy并用这种方式包装值-

import numpy as np

pandas.DataFrame({
  'a': [ np.int64(5100), np.int64(5200), np.int64(5300) ]
})

但我还是偶尔得到双份的,所以这肯定是错误的做法。如何确保数据类型在parquet文件的列之间是一致的?在

更新-

我发现只有当列包含一个或多个Nones时才会发生这种情况

^{pr2}$

拼花地板不能处理混合的非int64颜色吗?在


Tags: 文件数据numpypandas错误np模式情况
1条回答
网友
1楼 · 发布于 2024-06-14 17:08:13

Pandas本身目前无法处理整数列中的null/na值(版本0.23.x)。在下一个版本中,将有一个可为null的整数类型。同时,一旦整数列中有一个空值,Pandas会自动将其转换为float列。因此,在生成的拼花地板文件中还有一个浮点列:

import numpy as np
import pandas as pd

df = pd.DataFrame({
  'a': [np.int64(5100), np.int64(5200), np.int64(5300)]
})
# df['a'].dtype == dtype('int64')
df = pd.DataFrame({
  'a': [None, np.int64(5200), np.int64(5200)]
})
# df['a'].dtype == dtype('float64')

相关问题 更多 >