Разделить столбец фрейма данных на разделитель дефисов в PySpark - PullRequest
0 голосов
/ 11 мая 2019

У меня проблемы с разделением столбца фрейма данных на две строки на основе разделителя дефисов.

from pyspark.mllib.linalg.distributed import IndexedRow

rows = sc.parallelize([['14-banana'], ['12-cheese'], ['13-olives'], ['11-almonds']])

rows_df = rows.toDF(["ID"])

rows_df.show()

+----------+
|        ID|
+----------+
| 14-banana|
| 12-cheese|
| 13-olives|
|11-almonds|
+----------+

Итак, я хочу два столбца: один для идентификатора в числовом формате и один для типа пищи в виде строки.

1 Ответ

1 голос
/ 11 мая 2019

Вы ищете функцию split .Пожалуйста, найдите пример ниже:

import pyspark.sql.functions as F

rows = sc.parallelize([['14-banana'], ['12-cheese'], ['13-olives'], ['11-almonds']])

rows_df = rows.toDF(["ID"])
split = F.split(rows_df.ID, '-')

rows_df = rows_df.withColumn('number', split.getItem(0))
rows_df = rows_df.withColumn('fruit', split.getItem(1))


rows_df.show()

Вывод:

+----------+------+-------+ 
|        ID|number|  fruit| 
+----------+------+-------+ 
| 14-banana|    14| banana| 
| 12-cheese|    12| cheese| 
| 13-olives|    13| olives| 
|11-almonds|    11|almonds| 
+----------+------+-------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...