我有一个带有字符串键列的Pandas DataFrame/Polars嵌套框架/ Pyarrow表。你可以假设字符串是随机的。我想根据这个键列将该嵌套框架划分为N个较小的嵌套框架。
对于整数列,我可以使用df1 = df[df.key % N == 1]
,df2 = df[df.key % N == 2]
等。
对于如何处理字符串列,我最好的猜测是应用散列函数(例如,对字符串的所有值求和)将其转换为整数列,然后使用模数。
请告诉我在Pandas、Polars或Pyarrow中最有效的方法是什么,最好是在API中使用纯列操作。
2条答案
按热度按时间laik7k3q1#
我对@cbilots的回答有一个小小的补充。Polars有一个
hash
表达式,所以计算分区id是微不足道的。如果您将其与
partition_by
合并结合使用,您可以使用以下命令以极快的速度创建分区:个字符
分区的分组和具体化将并行进行。
bmvo0sr52#
我会尝试使用
hash_rows
来查看它在您的数据集和计算平台上的性能。(请注意,在计算中,我实际上只选择了key
字段并在其上运行hash_rows
)字符串
我刚刚在一个32核系统上的一个数据集上运行了这个程序,这个数据集有近4900万条记录,它在几秒钟内就完成了(我数据集中的“关键”字段是人们的姓氏)。
我还应该注意,有一个
partition_by
方法可能对分区有帮助。