📜  如何在 PySpark 中获取数据框列的名称?

📅  最后修改于: 2022-05-13 01:55:35.691000             🧑  作者: Mango

如何在 PySpark 中获取数据框列的名称?

在本文中,我们将讨论如何在 PySpark 中获取 Dataframe 列的名称。

为了获取 Dataframe 中存在的列的名称,我们通过这个函数使用columns函数,我们将获得 Dataframe 中存在的所有列名称的列表。

句法:

df.columns

我们还可以从 StructFields 列表中获取列的名称,然后从 StructFields 列表中提取列的名称。

句法:



df.schema.fields

让我们创建一个示例数据框,如下所示:

Python
# importing necessary libraries
from pyspark.sql import SparkSession
 
 
# function to create new SparkSession
def create_session():
    spk = SparkSession.builder \
        .master("local") \
        .appName("Product_details.com") \
        .getOrCreate()
    return spk
 
def create_df(spark, data, schema):
    df1 = spark.createDataFrame(data, schema)
    return df1
 
 
if __name__ == "__main__":
 
    input_data = [("Uttar Pradesh", 122000, 89600, 12238),
                  ("Maharashtra", 454000, 380000, 67985),
                  ("Tamil Nadu", 115000, 102000, 13933),
                  ("Karnataka", 147000, 111000, 15306),
                  ("Kerala", 153000, 124000, 5259)]
 
    # calling function to create SparkSession
    spark = create_session()
 
    schema = ["State", "Cases", "Recovered", "Deaths"]
 
    # calling function to create dataframe
    df = create_df(spark, input_data, schema)
 
    # visualizing the dataframe
    df.show()


Python
# getting the list of column names
col = df.columns
 
# printing
print(f'List of column names: {col}')
 
# visualizing the dataframe
df.show()


Python
# getting the list of StructFields
field = df.schema.fields
 
# using for loop to iterate and enumerate
# for indexing or numbering
for count, col_name in enumerate(field, 1):
   
    # printing the column names
    print(count, "-", col_name.name)
 
    # visualizing the dataframe
    df.show()


Python
# printing Dataframe schema to
# get the column names
df.printSchema()
 
# visualizing the dataframe
df.show()


输出:

示例 1:使用 df.columns

在示例中,我们创建了 Dataframe,然后我们使用 df.columns 获取 Dataframe 中存在的列名列表 然后我们打印了列名列表。

Python

# getting the list of column names
col = df.columns
 
# printing
print(f'List of column names: {col}')
 
# visualizing the dataframe
df.show()




输出:

示例 2:使用 df.schema.fields

在示例中,我们创建了 Dataframe,然后我们将获取包含列名称、列数据类型和可为空标志的 StructFields 列表。

我们已经将这个 StructFields 列表存储在名为“field”的变量中,然后迭代 field 的 for 循环并获取迭代次数,我们已经获取了计数并使用 enumerate()函数来获取从 1 开始的计数,我们有在 enumerate()函数传递字段后传递 1 。然后同时打印列的计数和名称。

Python

# getting the list of StructFields
field = df.schema.fields
 
# using for loop to iterate and enumerate
# for indexing or numbering
for count, col_name in enumerate(field, 1):
   
    # printing the column names
    print(count, "-", col_name.name)
 
    # visualizing the dataframe
    df.show()

输出:

示例 3:使用 df.printSchema()



另一种查看或获取数据帧中列名的方法我们可以看到数据帧的模式,这可以通过函数printSchema() 完成此函数用于从该模式打印数据帧的模式,我们可以查看所有列名。

Python

# printing Dataframe schema to
# get the column names
df.printSchema()
 
# visualizing the dataframe
df.show()


输出: