如何找到两个pyarrow数据集架构的不同之处?

2024-04-25 18:59:41 发布

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

我有两个pyarrow数据集模式,由于某种原因,它们是不同的,尽管它们应该是相同的(我假设在存储一个拼花文件时,对于一个分区,某些列被转换为不同的数据类型,但我不知道是哪一个)

现在我知道了如何比较两个模式是否相同。我可以这样做:

import pandas as pd
import numpy as np
import pyarrow as pa

df1 = pd.DataFrame({'col1': np.zeros(10), 'col2':np.random.rand(10)})
df2 = pd.DataFrame({'col1':np.ones(10), 'col2': np.zeros(10)})

schema_1 = pa.Schema.from_pandas(df1)
schema_2 = pa.Schema.from_pandas(df2)

schema_1.equals(schema_2)

df3 = df2.copy()
df3['col2'] = df3['col2'].astype('int')

schema_3 = pa.Schema.from_pandas(df3)
print(schema_1.equals(schema_2), schema_1.equals(schema_3))

但我如何找出它们的不同之处呢?(目视检查不算数,我试了一下,在500多列中没有发现任何差异)


Tags: fromimportpandasschemaasnp模式col2
1条回答
网友
1楼 · 发布于 2024-04-25 18:59:41

每个架构基本上是一组有序的pyarrow.field类型。因此,pyarrow.schema可以具有名称、类型以及字段类型的某些其他属性不同的字段。此外,顺序可能也很重要

要查找模式_3中不在模式_1中的字段,请使用集合

set(schema_3).difference(set(schema_1))

要仅查找不同字段的名称,请使用.names属性

set(schema_3.names).difference(set(schema_1.names))

相关问题 更多 >