Объединить два столбца структуры массива с разными полямиPython

Программы на Python
Anonymous
Объединить два столбца структуры массива с разными полями

Сообщение Anonymous »


У меня есть фрейм данных схемы

StructType( [ StructField('product_id', IntegerType(), True), StructField('tenant_id', IntegerType(), True), StructField("материалы", ArrayType(StructType([ StructField('id', IntegerType(), True), StructField('процент', FloatType(), True)] ))), StructField("эластичный", ArrayType(StructType([ StructField('id', IntegerType(), True), StructField('имя', MapType(StringType(), StringType()), True) ]))) ]) И я хочу объединить две структуры, чтобы получить новую с тремя полями, идентификатором, процентом и именем, где материалы.id = elastic.id, например:

StructType( [ StructField('product_id', IntegerType(), True), StructField('tenant_id', IntegerType(), True), StructField("материалы", ArrayType(StructType([ StructField('id', IntegerType(), True), StructField('процент', FloatType(), True), StructField('имя', MapType(StringType(), StringType()), True)] ))) ]) По сути

Я хочу уйти от этого До и ожидаемый результат

Я пробовал использовать udf и результаты, но с точки зрения производительности это не лучший подход.
@udf(returnType=ArrayType(StructType([ StructField("id", IntegerType(), False), StructField('процент', FloatType(), True), StructField('имя', MapType(StringType(), StringType()), True) ]))) defexpand_list(материалы, резинка): финал = [] для k в материалах: для меня в резинке: если k.id == i.id: Final += [{'id': k.id, 'процент': k.percentage, 'имя': i.name}] возвращение финала

Вернуться в «Python»