使用apacheparqu的第一步出现类型错误

2024-10-01 09:21:48 发布

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

在第一次尝试apacheparquet文件格式时遇到了这种类型的错误,这让人相当困惑。Parquet不应该像Pandas那样支持所有的数据类型吗?我错过了什么?在

import pandas
import pyarrow
import numpy

data = pandas.read_csv("data/BigData.csv", sep="|", encoding="iso-8859-1")
data_parquet = pyarrow.Table.from_pandas(data)

加薪:

^{pr2}$

data.dtypes是:

0      object
1      object
2      object
3      object
4      object
5     float64
6     float64
7      object
8      object
9      object
10     object
11     object
12     object
13    float64
14     object
15    float64
16     object
17    float64
...

Tags: csvimportnumpy类型pandasreaddataobject
2条回答

我也遇到了同样的问题,我花了一段时间才想出一个方法来找到这个令人讨厌的专栏。这是我找到混合类型列的方法-尽管我知道肯定有一种更有效的方法。在

在异常发生之前打印的最后一列是混合类型列。在

# method1: try saving the parquet file by removing 1 column at a time to 
# isolate the mixed type column.
cat_cols = df.select_dtypes('object').columns
for col in cat_cols:
    drop = set(cat_cols) - set([col])
    print(col)
    df.drop(drop, axis=1).reset_index(drop=True).to_parquet("c:/temp/df.pq")

另一次尝试-根据唯一值列出列和每种类型。在

^{pr2}$

在apachearrow中,表列的数据类型必须相同。pandas支持Python对象列,其中的值可以是不同的类型。所以在写入拼花板格式之前,您需要进行一些数据清理。在

我们已经在Arrow Python绑定中处理了一些基本情况(比如在一列中同时处理字节和unicode),但是我们不会冒险猜测如何处理坏数据。我打开了JIRAhttps://issues.apache.org/jira/browse/ARROW-2098关于在这种情况下添加一个将意外值强制为null的选项,这在将来可能会有所帮助。在

相关问题 更多 >