【发布时间】:2021-06-21 13:10:51
【问题描述】:
我正在尝试获取有关我的 pyarrow 表中两列中值的不同组合的信息。
我目前正在做的是:
import pandas as pd
import pyarrow as pa
my_table = pa.Table.from_pandas(
pd.DataFrame(
{
'col1':['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b'],
'col2':[1,1,2,2,1,1,2,3],
'col3':[1,2,3,4,5,6,7,8]
}
)
)
a = [i.to_numpy().astype('str') for i in my_table.select(['col1', 'col2']).columns]
unique = np.unique(np.array(a), axis = 1)
返回预期结果:
unique
>array([['a', 'a', 'b', 'b', 'b'],
['1', '2', '1', '2', '3']], dtype='<U21')
但是对于较大的表来说这很慢,我希望有更快的方法吗?
另外,我真正想知道的是,当我尝试编写分区数据集时,如何提前知道它将写入哪些目录(即哪些分区在我的表中有一些数据)
编辑:
它可以更快地转换为 pandas 而不是多个 numpy 数组,然后使用drop_duplicates():
my_table.select(['col1', 'col2']).to_pandas().drop_duplicates()
【问题讨论】:
-
确定列组合的唯一性(可以用箭头术语表示为 StructArray)尚未在 Arrow 中实现。所以短期内,我认为转换为 pandas 并使用
drop_duplicates()是你最好的选择。 -
感谢您的回复!是否有任何已知的实施计划?票,时间表?
-
普通票在issues.apache.org/jira/browse/ARROW-3978,没有具体的时间表,但希望在接下来的几个月里(groupby 的工作正在进行中,这也需要能够在多个列上分组)跨度>
标签: python numpy pyarrow apache-arrow