慕仙森
您可以将 lambda 函数应用于 Col1 和 Col2 并获取最后一项,如下所示:df['Last_Col1']=df['Col1'].apply(lambda x: x[-1])df['Last_Col2']=df['Col2'].apply(lambda x: x[-1])输出:>>> print(df) Col1 Col2 Last_Col1 Last_Col20 [X, X] [A, B] X B1 [Y] [B] Y B2 [X, Y, Z] [A, C] Z C3 [X, Y, Y, Z] [A, B, B, C] Z C
陪伴而非守候
您可以使用 Spark 高阶函数 - element_at 来从列表列中获取最后一个元素,如下所示创建数据框df = spark.createDataFrame([(1,['x','x']),(2,['y']),(3,['x','y','z']),(4,['x','y','y','z'])],[ "col1","col2"])df.show(truncate=False)+----+------------+|col1|col2 |+----+------------+|1 |[x, x] ||2 |[y] ||3 |[x, y, z] ||4 |[x, y, y, z]|+----+------------+解决方案df = df.withColumn("list_col", F.element_at(F.col('col2'), -1).alias('1st_from_end'))df.show(truncate=False)+----+------------+--------+|col1|col2 |list_col|+----+------------+--------+|1 |[x, x] |x ||2 |[y] |y ||3 |[x, y, z] |z ||4 |[x, y, y, z]|z |+----+------------+--------+