Я хочу выполнить операцию regexp_replace в столбце фрейма данных pyspark, используя словарь.
Словарь: {'RD':'ROAD','DR':'DRIVE','AVE':'AVENUE',....}
В словаре будет около 270 пар ключей-значений.
Входные данные:
ID | Address
1 | 22, COLLINS RD
2 | 11, HEMINGWAY DR
3 | AVIATOR BUILDING
4 | 33, PARK AVE MULLOHAND DR
желаемый выходной кадр данных:
ID | Address | Address_Clean
1 | 22, COLLINS RD | 22, COLLINS ROAD
2 | 11, HEMINGWAY DR | 11, HEMINGWAY DRIVE
3 | AVIATOR BUILDING | AVIATOR BUILDING
4 | 33, PARK AVE MULLOHAND DR | 33, PARK AVENUE MULLOHAND DRIVE
Я не могу найти какую-либо документацию в интернете. И если вы пытаетесь передать словарь, как показано ниже кодов -
data=data.withColumn('Address_Clean',regexp_replace('Address',dict))
Выдает ошибку «regexp_replace принимает 3 аргумента, 2 дано».
Набор данных будет иметь размер около 20 миллионов. Следовательно, решение UDF будет медленным (из-за строковой операции), и у нас нет доступа к версии 2.3.0 spark, которая поддерживает pandas_udf.
Есть ли эффективный способ сделать это, кроме как использование цикла?