如何在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+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告