以下代码查找 Dataframe df中所有列的最大长度。
df
from pyspark.sql.functions import col, length, max df=df.select([max(length(col(name))) for name in df.schema.names])
t40tm48m1#
您可以添加一个测试df.schema的dataType的条件。例如:
df.schema
dataType
from pyspark.sql.types import StringType df = spark.createDataFrame( [ (1, '2', '1'), (1, '4', '2'), (1, '2', '3'), ], ['col1','col2','col3'] ) df.select([ max(length(col(schema.name))).alias(f'{schema.name}_max_length') for schema in df.schema if schema.dataType == StringType() ]) +---------------+---------------+ |col2_max_length|col3_max_length| +---------------+---------------+ | 1| 1| +---------------+---------------+
abithluo2#
除了使用schema.names,您还可以使用schema.fields返回StructField的列表,您可以迭代该列表并获取每个字段的名称和类型。
schema.names
schema.fields
df.select([max(length(col(field.name))) for field in df.schema.fields if field.dataType.typeName == "string"])
2ul0zpep3#
df = df.select([max(length(col(name))) for (name, type) in df.dtypes if type == 'string'])
3条答案
按热度按时间t40tm48m1#
您可以添加一个测试
df.schema
的dataType
的条件。例如:abithluo2#
除了使用
schema.names
,您还可以使用schema.fields
返回StructField的列表,您可以迭代该列表并获取每个字段的名称和类型。2ul0zpep3#