Python 3.x 如何删除PySpark数据帧中的数组元素?

Python 3.x 如何删除PySpark数据帧中的数组元素?,python-3.x,dataframe,apache-spark,pyspark,apache-spark-sql,Python 3.x,Dataframe,Apache Spark,Pyspark,Apache Spark Sql,我想从此阵列中删除条形码 我的数据框看起来像下面给出的示例 |-- variants: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- admin_graphql_api_id: string (nullable = true) | | |-- barcode: string (nullable = true) | | |-- comp

我想从此阵列中删除条形码

我的数据框看起来像下面给出的示例

|-- variants: array (nullable = true)

 |    |-- element: struct (containsNull = true)

 |    |    |-- admin_graphql_api_id: string (nullable = true)

 |    |    |-- barcode: string (nullable = true)

 |    |    |-- compare_at_price: string (nullable = true)
您能否帮助我使用PySpark从数据帧中删除元素。

您可以使用:

从pyspark.sql.types导入ArrayType、StringType、StructType、StructField
df=df.withColumn(“variants”,F.arrays\u zip(“variants.admin\u graphql\u api\u id”,“variants.compare\u at\u price”))
df=df.withColumn(“变体”,F.col(“变体”).cast(模式))
df.printSchema()
印刷品

根目录
|--变量:数组(nullable=true)
||--元素:struct(containsnall=true)
|| |--admin_graphql_api_id:string(nullable=true)
|| |--compare_at_price:string(nullable=true)
第二个
withColumn
是设置新结构的字段名所必需的。
arrays\u-zip
仅适用于Spark版本>=2.4.0。如果您使用的是较旧的Spark版本,则可以使用UDF:

def func(数组):
为数组中的x返回[[x.admin\u graphql\u api\u id,x.compare\u at\u price]
func_udf=F.udf(func,模式)
df=df.withColumn(“变量”),func_udf(“变量”)

当您删除
元素时,
是否会得到一个空数组?不,我需要管理图形api id,并单独比较价格,这是我的错。我没有看到你的postNo问题@werner的第一行