Это то, что вы хотите, я думаю, я также реализовал это на фиктивных данных:
import pyspark.sql.types as T
import pyspark.sql.functions as F
df = sqlContext.createDataFrame([['E101',["E101", "E102", "E103", "E104", "E105"]]],["eid", "mapped_eid"])
df.persist()
df.show(truncate = False)
+----+------------------------------+
|eid |mapped_eid |
+----+------------------------------+
|E101|[E101, E102, E103, E104, E105]|
+----+------------------------------+
@F.udf(returnType=T.ArrayType(T.StringType()))
def find_element(element,temp_list):
count = 0
res = []
for i in range(len(temp_list)):
if (count == 0) and (temp_list[i] != element):
count = 1
res.append(temp_list[i])
elif count == 1:
res.append(temp_list[i])
return res
df.withColumn(
"res_col",
find_element(F.col("eid"), F.col("mapped_eid"))
).show(truncate = False)
+----+------------------------------+------------------------+
|eid |mapped_eid |res_col |
+----+------------------------------+------------------------+
|E101|[E101, E102, E103, E104, E105]|[E102, E103, E104, E105]|
+----+------------------------------+------------------------+
Дайте мне знать, если это работает для вас.