我有两个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多列中没有发现任何差异)
每个架构基本上是一组有序的pyarrow.field类型。因此,pyarrow.schema可以具有名称、类型以及字段类型的某些其他属性不同的字段。此外,顺序可能也很重要
要查找模式_3中不在模式_1中的字段,请使用集合
要仅查找不同字段的名称,请使用.names属性
相关问题 更多 >
编程相关推荐