数据框创建(createDataFrame)

DataFrame从、RDD列表、列表、pandas.DataFrame列表numpy.ndarray、或项创建一个pyarrow.Table

Syntax

createDataFrame(data, schema=None, samplingRatio=None, verifySchema=True)

参数

参数 类型 Description
data RDD 或可迭代 任何类型的 SQL 数据表示形式的 RDD(Row、、tupleintbooldict等)或 、listpandas.DataFramenumpy.ndarraypyarrow.Table
schema DataType、str 或 list(可选) DataType个、数据类型字符串或列名列表。 提供列名列表时,将推断 data出每个列的类型。 当None,架构是从data(需要或Rownamedtuple)推断出来的dictDataType提供数据类型字符串时,它必须与实际数据匹配。
samplingRatio float,可选 用于架构推理的行的示例比率(当 dataRDD. 如果使用 None前几行。
verifySchema bool,可选 根据架构验证每行的数据类型。 默认启用。 pyarrow.Table不支持输入或已启用箭头的 pandas 转换。

退货

DataFrame

注释

用法是实验性的 spark.sql.execution.arrow.pyspark.enabled=True

示例

# Create a DataFrame from a list of tuples.
spark.createDataFrame([('Alice', 1)]).show()
# +-----+---+
# |   _1| _2|
# +-----+---+
# |Alice|  1|
# +-----+---+

# Create a DataFrame from a list of dictionaries.
spark.createDataFrame([{'name': 'Alice', 'age': 1}]).show()
# +---+-----+
# |age| name|
# +---+-----+
# |  1|Alice|
# +---+-----+

# Create a DataFrame with column names specified.
spark.createDataFrame([('Alice', 1)], ['name', 'age']).show()
# +-----+---+
# | name|age|
# +-----+---+
# |Alice|  1|
# +-----+---+

# Create a DataFrame with an explicit schema.
from pyspark.sql.types import StructType, StructField, StringType, IntegerType
schema = StructType([
    StructField("name", StringType(), True),
    StructField("age", IntegerType(), True)])
spark.createDataFrame([('Alice', 1)], schema).show()
# +-----+---+
# | name|age|
# +-----+---+
# |Alice|  1|
# +-----+---+

# Create a DataFrame with a DDL-formatted schema string.
spark.createDataFrame([('Alice', 1)], "name: string, age: int").show()
# +-----+---+
# | name|age|
# +-----+---+
# |Alice|  1|
# +-----+---+

# Create an empty DataFrame (schema is required when data is empty).
spark.createDataFrame([], "name: string, age: int").show()
# +----+---+
# |name|age|
# +----+---+
# +----+---+

# Create a DataFrame from Row objects.
from pyspark.sql import Row
Person = Row('name', 'age')
spark.createDataFrame([Person("Alice", 1)]).show()
# +-----+---+
# | name|age|
# +-----+---+
# |Alice|  1|
# +-----+---+