如何删除PySpark DataFrame列的前两行?

s2j5cfk0  于 2023-04-29  发布在  Spark
关注(0)|答案(1)|浏览(249)

我有一个PySpark DataFrame,其中有一列标记化的文本,我想删除该列的前两行。下面是DataFrame的一个例子:

data = [(["This", "is", "a", "sample", "sentence"]),
    (["Another", "example", "sentence", "here"]),
    (["One", "more", "sentence"])]

df = spark.createDataFrame(data, ["tokenized_text"])

它的模式类似于

root
|-- tokenized_text: array (nullable = true)
|    |-- element: string (containsNull = true)

我尝试使用drop函数如下:

DF = df.select('tokenized_text').drop(*[str(i) for i in range(2)])

然而,当我计算tok_df中的行数时,它仍然包括我试图删除的前两行:

DF.count()

我得到相同的行数,也就是3
有人能帮助我理解为什么前两行没有被删除,并提出解决这个问题的方法吗?
先谢谢你了!

5n0oy7gb

5n0oy7gb1#

drop函数用于删除列。尝试使用row_number函数并将行号分配给DataFrame。类似这样的东西可能有用:

window = Window.orderBy("tokenized_text")
df = df.withColumn("row_num", row_number().over(window))
df_filtered = df.filter(df.row_num > 2).drop("row_num")

相关问题