如何在 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 函数来获取 Dataframe 中存在的列的名称。使用此函数,我们将获得 Dataframe 中存在的每个列名的列表。
from pyspark.sql import SparkSession # 创建一个 SparkSession 对象 spark = SparkSession.builder.appName("Get Column Names").getOrCreate() # 创建一个示例数据框 data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)] df = spark.createDataFrame(data, ["Name", "Age"]) # 获取列名 column_names = df.columns # 打印列名 print(column_names)
输出
['Name', 'Age']
在此示例中,我们首先建立一个示例名为 df 的数据框包含两列:"Name"和"Age"。然后使用 columns 属性获取列名列表,并将其保存在 column_names 变量中。最后,我们使用 print 函数输出列名。
方法 2
此示例中的列名是使用来自数据框对象的 select() 函数获取的。我们使用列表推导遍历数据框的列,并对每个列名调用 col() 方法。随后使用 name 属性获取实际列名,然后将其作为参数发送给 select() 函数。结果数据框中仅存在指定的列,我们可以使用 columns 属性获取这些列。最后,我们使用 print 函数输出列名。
示例
from pyspark.sql.functions import col from pyspark.sql import SparkSession # 创建一个 SparkSession 对象 spark = SparkSession.builder.appName("Get Column Names").getOrCreate() # 创建一个示例数据框 data = [("Alice", 25), ("Bob", 30), ("Charlie", 35)] df = spark.createDataFrame(data, ["Name", "Age"]) # 使用 select() 函数获取列名 column_names = df.select([col(c).name for c in df.columns]).columns # 打印列names Print(column_names)
输出
['Name', 'Age']
结论
columns 属性可用于获取 PySpark DataFrame 列的名称。DataFrame 中的列名由此属性提供的字符串列表表示。
使用 PySpark 的 createDataFrame() 方法创建 DataFrame,然后将数据和列名作为参数提供给该 DataFrame 以使用此属性。然后可以使用 columns 属性获取 DataFrame 的列名。输出将是一组与 DataFrame 的列名相对应的字符串。