从像这样的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之外的多索引的所有其他索引。有没有一个简单的方法可以做到这一点?