это ключевое слово в Python.

могу обновить метаданные столбца в PySpark? У меня есть значения метаданных, соответствующие номинальному кодированию категориальных (строковых) функций, и я хотел бы декодировать их обратно автоматически. Запись метаданных в API pyspark недоступна напрямую, если вы не воссоздаете схему. Можно ли редактировать метаданные в PySpark на ходу, не преобразовывая набор данных в RDD и не конвертируя его обратно, при условии полного описания схемы (как описаноВот)?

Пример листинга:

# Create DF
df.show()

# +---+-------------+
# | id|     features|
# +---+-------------+
# |  0|[1.0,1.0,4.0]|
# |  1|[2.0,2.0,4.0]|
# +---+-------------+
# - That one has all the necessary metadata about what is encoded in feature column

# Slice one feature out
df = VectorSlicer(inputCol='features', outputCol='categoryIndex', indices=[1]).transform(df)
df = df.drop('features')
# +---+-------------+
# | id|categoryIndex|
# +---+-------------+
# |  0|        [1.0]|
# |  1|        [2.0]|
# +---+-------------+
# categoryIndex now carries metadata about singular array with encoding

# Get rid of the singular array
udf = UserDefinedFunction(lambda x: float(x[0]), returnType=DoubleType())
df2 = df.select(*[udf(column).alias(column) if column == 'categoryIndex' else column for column in df.columns])
# +---+-------------+
# | id|categoryIndex|
# +---+-------------+
# |  0|          1.0|
# |  1|          2.0|
# +---+-------------+
# - Metadata is lost for that one


# Write metadata
extract = {...}
df2.schema.fields[1].metadata = extract(df.schema.fields[1].metadata)
# metadata is readable from df2.schema.fields[1].metadata but is not affective. 
# Saving and restoring df from parque destroys the change
# Decode categorical
df = IndexToString(inputCol="categoryIndex", outputCol="category").transform(df)
# ERROR. Was supposed to decode the categorical values

Вопрос дает представление о том, как работать с VectorAssembler, VectorIndexer и как добавлять метаданные путем создания полной схемы с использованием StructType, но пока не отвечает на мой вопрос.

Ответы на вопрос(1)

Ваш ответ на вопрос