столбцы значений сортировка pyspark - PullRequest
0 голосов
/ 04 июля 2019

У меня есть этот DataFrame ниже:

Ref °     | Indice_1 | Indice_2      | 1    |   2   |  indice_from     |    indice_from      |      indice_to    |  indice_to  
---------------------------------------------------------------------------------------------------------------------------------------------
1         |   19     |   37.1        |  32       |    62      |  ["20031,10031"]  |   ["13,11/12"]     |     ["40062,30062"] |  ["14A,14"]
---------------------------------------------------------------------------------------------------------------------------------------------
2         |   19     |   37.1        |  44       |    12      |  ["40062,30062"]  |   ["13,11/12"]     |     ["40062,30062"] |  ["14A,14"]
---------------------------------------------------------------------------------------------------------------------------------------------
3         |   19     |   37.1        |  22       |    64      |  ["20031,10031"]  |   ["13,11/12"]       |     ["20031,10031"] |  ["13,11/12"]
---------------------------------------------------------------------------------------------------------------------------------------------
4         |   19     |   37.1        |  32       |    98      |  ["20032,10032"]  |   ["13,11/12"]     |     ["40062,30062"] |  ["13,11/12"]

Я хочу отсортировать asc значения столбцов indice_from, indice_from, indice_to и indice_to, и мне не следует касаться остальных столбцов моего DataFrame. Зная, что 2 столбца indice_from и indice_to иногда содержат число + буква, например: ["14,14A"] В случае, если у меня есть пример, подобный ["14,14A"], у меня всегда должна быть та же самая структура, например, если у меня есть:

Число 15, второе значение должно 15 + буква, и 15 <15 + буква, если первое значение 9, второе значение должно 9 + буква и 9 <9 + буква </p>

Новый фрейм данных:

Ref °     | Indice_1 | Indice_2      | 1    |   2   |  indice_from     |    indice_from      |      indice_to     |  indice_to  
---------------------------------------------------------------------------------------------------------------------------------------------
1         |   19     |   37.1        |  32       |    62      |  ["10031,20031"]  |   ["11/12,13"]       |     ["30062,40062"] |  ["14,14A"]
---------------------------------------------------------------------------------------------------------------------------------------------
2         |   19     |   37.1        |  44       |    12      |  ["30062,40062"]  |   ["11/12,13"]       |     ["30062,40062"] |  ["14,14A"]
---------------------------------------------------------------------------------------------------------------------------------------------
3         |   19     |   37.1        |  22       |    64      |  ["10031,20031"]  |   ["11/12,13"]       |     ["10031,20031"] |  ["11/12,13"]
---------------------------------------------------------------------------------------------------------------------------------------------
4         |   19     |   37.1        |  32       |    98      |  ["10031,20031"]  |   ["11/12,13"]       |     ["30062,40062"] |  ["11/12,13"]

Кто-то может помочь, как я могу отсортировать значения столбцов indice_from, indice_from, indice_to и indice_to, чтобы получить новый Dataframe, как второй df выше? Спасибо

1 Ответ

0 голосов
/ 04 июля 2019

Если я правильно понимаю, то

from pyspark.sql import functions as F

columns_to_sort = ['indice_from', 'indice_from', 'indice_to', 'indice_to']

for c in columns_to_sort:
    df = (
        df
        .withColumn(
            c,
            F.sort_array(c)
        )
    )

справится с задачей.Дайте мне знать, если это не

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...