2 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以將 lambda 函數(shù)應(yīng)用于 Col1 和 Col2 并獲取最后一項(xiàng),如下所示:
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_Col2
0 [X, X] [A, B] X B
1 [Y] [B] Y B
2 [X, Y, Z] [A, C] Z C
3 [X, Y, Y, Z] [A, B, B, C] Z C

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
您可以使用 Spark 高階函數(shù) - element_at 來從列表列中獲取最后一個(gè)元素,如下所示
創(chuàng)建數(shù)據(jù)框
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 |
+----+------------+--------+
添加回答
舉報(bào)