如何在PySpark中獲取資料框列的名稱?


PySpark 中的資料框列是由以表格形式排列的一組命名資料值構成的。列表示資料的單個變數或屬性,例如人的年齡、產品的價格或客戶的位置。

可以使用 `withColumn` 方法向 PySpark 資料框新增列。此方法允許您命名新列並指定生成其值的規則。建立列後,您可以使用它對資料執行許多操作,包括過濾、分組和聚合。由於 PySpark 資料框中的列在多個節點上並行分析,因此這使得資料分析更快、更高效。

在PySpark中獲取資料框列名稱的演算法

要在 PySpark 中獲取資料框列的名稱,您應該遵循以下技術和步驟:

步驟1 - PySpark 中的資料框列是由以表格形式排列的一組命名資料值構成的。列表示資料的單個變數或屬性,例如人的年齡、產品的價格或客戶的位置。

步驟2 - PySpark 中的 `columns` 屬性返回資料框中所有列名稱的列表,可用於檢索資料框列的名稱。此方法簡單有效,因為不需要額外的計算或轉換。

步驟3 - 使用 `select` 方法,並將列名作為輸入,以另一種方式獲取特定資料框列的名稱。此函式返回一個僅包含所選列的新資料框,以便您可以使用 `columns` 屬性提取列名作為字串。

步驟4 - PySpark 中的 `printSchema` 方法是獲取資料框中列名的第三種方法,該方法以樹狀方式顯示資料框的模式。此方法透過顯示資料框中每一列的名稱和資料型別,簡化了確定特定列名稱的過程。

步驟5 - 使用 `describe` 方法是最後一種方法,它可以提供資料框統計資料的概述,包括所有列的名稱。此方法返回一個包含每個列統計資料的新資料框,可以使用 `columns` 屬性生成字串列表。

語法

df.columns

列名也可以從結構化欄位列表中獲取,然後可以使用該列表來檢索列名。

語法

df.schema.fields

方法

方法1

我們使用 `columns` 函式來獲取資料框中存在的列的名稱。使用此函式,我們將獲得資料框中每個列名稱的列表。

from pyspark.sql import SparkSession

# Create a SparkSession object
spark = SparkSession.builder.appName("Get Column Names").getOrCreate()

# Create a sample dataframe
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
df = spark.createDataFrame(data, ["Name", "Age"])

# Get the column names
column_names = df.columns

# Print the column names
print(column_names)

輸出

['Name', 'Age']

在此示例中,我們首先建立一個名為 `df` 的示例資料框,其中包含兩列:“姓名”和“年齡”。然後使用 `columns` 屬性獲取列名稱列表,並將其儲存在 `column_names` 變數中。最後,我們使用 `print` 函式輸出列名。

方法2

在此示例中,列名是使用資料框物件的 `select()` 函式獲取的。我們使用列表推導式遍歷資料框的列,並對每個列名呼叫 `col()` 方法。然後,我們使用 `name` 屬性獲取實際的列名,然後將其作為引數傳遞給 `select()` 函式。結果資料框僅包含指定的列,我們可以使用 `columns` 屬性獲取這些列。最後,我們使用 `print` 函式輸出列名。

示例

from pyspark.sql.functions import col
from pyspark.sql import SparkSession

# Create a SparkSession object
spark = SparkSession.builder.appName("Get Column Names").getOrCreate()

# Create a sample dataframe
data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)]
df = spark.createDataFrame(data, ["Name", "Age"])

# Use the select() function to get column names
column_names = df.select([col(c).name for c in df.columns]).columns

# Print the column names
Print(column_names)

輸出

['Name', 'Age']

結論

可以使用 `columns` 屬性來獲取 PySpark DataFrame 列的名稱。此屬性返回一個表示 DataFrame 中列名的字串列表。

要使用此屬性,請使用 PySpark 的 `createDataFrame()` 方法建立一個 DataFrame,然後將資料和列名作為引數提供給該 DataFrame。然後可以使用 `columns` 屬性獲取 DataFrame 的列名。輸出將是一組與 DataFrame 的列名對應的字串。

更新於:2023年7月24日

3000+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.