📜  获取 PySpark Dataframe 中特定单元格的值(1)

📅  最后修改于: 2023-12-03 15:27:47.915000             🧑  作者: Mango

获取 PySpark Dataframe 中特定单元格的值

在 PySpark 中,DataFrame 是最常见的数据结构之一,是一个分布式的数据集合,可以看做是由许多行组成并且每个行有不同的列。

要获取 PySpark DataFrame 中特定单元格的值,可以使用 collect() 函数和 iloc[]

假设我们有以下的 PySpark DataFrame:

from pyspark.sql import SparkSession
from pyspark.sql.types import *

spark = SparkSession.builder.appName('SparkTutorial').getOrCreate()

data = [("Alice", 1), ("Bob", 2), ("Charlie", 3), ("Dave", 4), ("Ed", 5)]
schema = StructType([StructField("Name", StringType(), True),StructField("Number", IntegerType(), True)])

df = spark.createDataFrame(data=data, schema=schema)

DataFrame:

+-------+------+
|   Name|Number|
+-------+------+
|  Alice|     1|
|    Bob|     2|
|Charlie|     3|
|   Dave|     4|
|     Ed|     5|
+-------+------+

要获取第一行第二列(也就是 Alice 对应的Number 值),可以使用以下代码:

value = df.collect()[0]["Number"]

首先我们调用 collect() 函数,将 DataFrame 中的所有数据收集到一个集合中。然后我们通过索引值 [0] 获取第一行,最后我们使用 ["Number"] 操作符获取该行中的 Number 列。因此变量 value 等于 1

如果 DataFrame 中有多行多列,我们只需更改索引值即可更改所需单元格的位置。

这是一个示例:

value = df.collect()[2]["Name"]

这个 value 等于 "Charlie"

以上就是获取 PySpark DataFrame 中特定单元格的方法。

注意:collect() 函数会将 DataFrame 中的所有数据都收集到本地计算机上,当 DataFrame 太大时会导致内存不足。因此,如果您只需要 DataFrame 中的特定单元格,请确保只收集该单元格,而不是整个 DataFrame。