gpt4 book ai didi

apache-spark - 有没有办法根据pyspark中的索引对数据帧进行切片?

转载 作者:行者123 更新时间:2023-12-04 00:03:54 32 4
gpt4 key购买 nike

在 python 或 R 中,有一些方法可以使用索引对 DataFrame 进行切片。

例如,在 Pandas 中:

df.iloc[5:10,:]

pyspark 中是否有类似的方法可以根据行的位置对数据进行切片?

最佳答案

简答

如果您已经有一个索引列(假设它被称为 'id' ),您可以使用 pyspark.sql.Column.between 进行过滤。 :

from pyspark.sql.functions import col
df.where(col("id").between(5, 10))

如果您还没有索引列,您可以 add one yourself然后使用上面的代码。您应该根据其他一些列 ( orderBy("someColumn") ) 在数据中内置一些排序。

完整说明

不,除非索引已经作为列存在,否则很难按索引对 Spark DataFrame 进行切片。

Spark DataFrame 本质上是无序的,不支持随机访问。 (没有像 中那样的内置索引的概念)。每行都被视为结构化数据的独立集合,这就是分布式并行处理的原因。因此,任何执行器都可以获取任何数据块并对其进行处理,而无需考虑行的顺序。

现在显然可以执行涉及排序的操作( lead lag 等),但这些操作会更慢,因为它需要 spark 在执行程序之间打乱数据。 (数据的混洗通常是 Spark 作业中最慢的组件之一。)

相关/延伸阅读
  • PySpark DataFrames - way to enumerate without converting to Pandas?
  • PySpark - get row number for each row in a group
  • how to add Row id in pySpark dataframes
  • 关于apache-spark - 有没有办法根据pyspark中的索引对数据帧进行切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52792762/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com