Python 如何获取PySpark中列的最后一个值

Python 如何获取PySpark中列的最后一个值,python,pyspark,pyspark-sql,Python,Pyspark,Pyspark Sql,这个问题很琐碎,但我对PySpark的世界是全新的,即使是简单的任务,我也面临着很多问题 假设我们有一个带有列a的数据帧df 我想创建另一个数据帧,它只包含一个最后一个值为A的列(这里的最后一个值是指列n A底部的真正记录) 我已经试过类似的东西了 df[“A”][-1]但我得到了一个错误 请注意,如果可能的话,我想为PySpark和PySpark Sql中的Python代码提供一个解决方案。请仔细订购,因为在PySpark中,默认情况下不会对数据帧进行订购。这意味着df.take(1)可能并不

这个问题很琐碎,但我对PySpark的世界是全新的,即使是简单的任务,我也面临着很多问题

假设我们有一个带有列a的数据帧df

我想创建另一个数据帧,它只包含一个最后一个值为A的列(这里的最后一个值是指列n A底部的真正记录)

我已经试过类似的东西了

df[“A”][-1]
但我得到了一个错误


请注意,如果可能的话,我想为PySpark和PySpark Sql中的Python代码提供一个解决方案。

请仔细订购,因为在PySpark中,默认情况下不会对数据帧进行订购。这意味着
df.take(1)
可能并不总是返回相同的值

这篇文章对此非常清楚

2种解决方案:

  • 从列中选择任意随机值->
    取(1)
    即可
  • 您有某种顺序,然后可以使用
    sort
    函数和
    asc
    参数来反转排序

  • 好的,谢谢,但一般来说,极限(1)函数怎么样?它是否总是给我第一条记录,或者甚至每次都会产生不同的值?@WorkBench
    limit
    不会总是给相同的记录,除非您指定一个确定性的
    order by
    我的经验是,大多数时间
    take(1)
    返回相同的值,除非您并行计算。那么它就更随机,取决于你放的并行核的数量。如果您总是想要一个特定的值,则必须在某个点对数据帧进行排序。Spark数据帧不排序。你必须以某种方式定义“最后”的含义。