【问题标题】:pyspark row number dataframepyspark 行号数据框
【发布时间】:2016-05-23 12:11:37
【问题描述】:

我有一个数据框,其中包含时间、a、b、c、d、val 列。 我想创建一个带有附加列的数据框,其中将包含每个组内行的行号,其中 a、b、c、d 是组键。

我尝试使用 spark sql,通过定义一个窗口函数,特别是在 sql 中它看起来像这样:

select time, a,b,c,d,val, row_number() over(partition by a,b,c,d order by     time) as rn from table
group by a,b,c,d,val

我想在数据框本身上执行此操作,而不使用 sparksql。

谢谢

【问题讨论】:

  • 不使用 sparksql 对你意味着什么?

标签: python apache-spark pyspark apache-spark-sql


【解决方案1】:

我对python api不太了解,但我会尝试一下。您可以尝试以下方法:

from pyspark.sql import functions as F

df.withColumn("row_number", F.row_number().over(Window.partitionBy("a","b","c","d").orderBy("time"))).show()

【讨论】:

  • 是的,和我一样,你错过了分区部分,df = df.withColumn("id",F.rowNumber().over(Window.partitionBy("a"," b","c","d").orderBy(col("time")))), 但我想不这样做。谢谢
  • 注意,spark
  • 谢谢@laguitemh
  • @CarlosVilchez 是否有必要使用 orderby 部分?我们可以添加row_number 保留自然排序而不订购它吗?
  • @Matthew 您可能需要为此创建一个新问题。可能有一些我没有立即想到的复杂性,但是您需要 orderby 并且可能需要一个带有 row_number 的新列才能使用它。
猜你喜欢
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2016-08-16
  • 2021-08-02
  • 2018-12-04
  • 1970-01-01
相关资源
最近更新 更多