У меня есть следующий фрейм данных, содержащий столбец массивов (col1). Мне нужно получить индекс элемента, содержащего определенную подстроку ("58=").
+-----------------------------------------------------------+-----+
| col1 |a_pos|
+-----------------------------------------------------------+-----+
|[8=FIX.4.4, 55=ITUBD264, 58=AID[43e39b2e-c6e2-4947] | 0|
+-----------------------------------------------------------+-----+
Я пытался использовать array_position(col1, "58 = "), но, похоже, он работает только с точным соответствием, а не с подстроками.
В Python я делаю именно это, но в pandas, используя следующий код:
df['idx'] = [max(range(len(l)), key=lambda x: '58=' in l[x]) for l in df['col1']]






Проверьте наличие 58, используя функцию rlike в функции более высокого порядка. Определите положение с помощью array_position. Код ниже
df = df.withColumn('index',expr("array_position(transform(col1, x-> rlike(x,58)),true)")).show(truncate=False)
+---------------------------------------------------+-----+-----+
|col1 |a_pos|index|
+---------------------------------------------------+-----+-----+
|[8=FIX.4.4, 55=ITUBD264, 58=AID[43e39b2e-c6e2-4947]|0 |3 |
+---------------------------------------------------+-----+-----+