当前位置: 首页 > 面试题库 >

如何选择最后一行以及如何按索引访问PySpark数据帧?

丁恩
2023-03-14
问题内容

从像这样的PySpark SQL数据框

name age city
abc   20  A
def   30  B

如何获得最后一行。(就像df.limit(1)一样,我可以将数据帧的第一行放入新的数据帧中)。

以及如何按索引访问数据框行。12或200。

我可以在熊猫里做

df.tail(1) # for last row
df.ix[rowno or index] # by index
df.loc[] or by df.iloc[]

我只是很好奇如何以这种方式或其他方式访问pyspark数据框。

谢谢


问题答案:

如何获得最后一行。

假设所有列都可修改的漫长而丑陋的方式:

from pyspark.sql.functions import (
    col, max as max_, struct, monotonically_increasing_id
)

last_row = (df
    .withColumn("_id", monotonically_increasing_id())
    .select(max(struct("_id", *df.columns))
    .alias("tmp")).select(col("tmp.*"))
    .drop("_id"))

如果不是所有列都可以订购,则可以尝试:

with_id = df.withColumn("_id", monotonically_increasing_id())
i = with_id.select(max_("_id")).first()[0]

with_id.where(col("_id") == i).drop("_id")

注意。/oassql.functions中有last函数,pyspark.sql.functions`但考虑到对相应表达式的描述,此处不是一个好的选择。

我如何通过index.like访问数据框行



 类似资料:
  • 问题内容: 我已经做了一些寻找该问题答案的搜索,但是我能弄清楚的是: 在我看来,这似乎很古怪,又不合蟒蛇风(而且很慢?)。 在不指定列名的情况下,为pandas数据框中的最后一列选择数据的最简单方法是什么? 问题答案: 使用iloc并针对最后一列()选择所有行():

  • 是否有任何方法可以在数据框中按索引(即整数)选择行,按列名选择列? 我尝试使用loc,但它返回一个错误,我知道iloc只适用于索引。 这是数据帧df的第一行。我愿意选择第一行,名为“Volume”的列,并尝试使用df.loc[0,'Volume']

  • 我到处寻找这个,但我似乎找不到它(尽管它一定非常琐碎)。 我的问题是,我想检索数据帧的第一个和最后一个条目的列的值。但是如果我这样做了: 我得到: 但是如果我这样做了: 我得到: 用不同的格式。理想情况下,我希望能够访问数据帧的最后一个索引的值,但我找不到如何访问。 我甚至尝试创建一个包含索引值的列(IndexCopy),然后尝试: 但这也会产生一种不同的格式(因为df.tail(1)['Inde

  • 问题内容: 我有大量的数据,需要比较该数组中所有样本的距离与该数组中所有其他元素的距离。以下是我的数据集的一个非常简单的示例。 有没有一种方法可以为非示例索引的索引建立一个numpy数组?在上面的示例中,我创建了一个名为other_indexes的列表。由于各种原因,我宁愿不必这样做(大型数据集,线程,正在运行的系统上的内存非常低等,等等)。有没有办法做类似的事情.. 我读到numpy面具可以做到

  • 我正在尝试从多索引数据帧中仅使用一个索引来创建新的数据帧。 理想情况下,我想要这样的东西: 和: 基本上,我想删除除level之外的多索引的所有其他索引。有没有一个简单的方法可以做到这一点?