Учитывая следующий DataFrame, нам нужно интерполировать my_column
значения из примера и использовать их как отдельные столбцы, а затем сортировать по int_column
значениям, которые принадлежат каждому столбцу some_id
в порядке убывания. Пример:
+--------------------+-----------+------------------+
| some_id | my_column | int_column |
+--------------------+-----------+------------------+
|xx1 |id_1 | 3 |
|xx1 |id_2 | 4 |
|xx1 |id_3 | 5 |
|xx2 |id_1 | 6 |
|xx2 |id_2 | 1 |
|xx2 |id_3 | 3 |
|xx3 |id_1 | 4 |
|xx3 |id_2 | 8 |
|xx3 |id_3 | 9 |
|xx4 |id_1 | 1 |
+--------------------+-----------+------------------+
Ожидаемый результат:
+--------------------+-----------+------------------+
| id_1 | id_2 | id_3 |
+--------------------+-----------+------------------+
| [xx4, 1] |[xx2, 1] |[xx2, 3] |
| [xx1, 3] |[xx1, 4] |[xx1, 5] |
| [xx3, 4] |[xx3, 8] |[xx3, 9] |
| [xx2, 6] |null |null |
+--------------------+-----------+------------------+
Как видите, для id_1
самое низкое число в int_column
равно 1 в конце DataFrame, и оно принадлежит xx4
из столбца some_id
, следующее значение равно 3, 4, и 6, каждый из которых принадлежит к xx1, xx3 и xx2 соответственно.
Есть какие-нибудь указатели на то, как подойти к этой проблеме? Можно использовать PySpark или Pandas.
Код для воспроизведения входных данных:
import pandas as pd
data = {'some_id': ['xx1', 'xx1', 'xx1', 'xx2', 'xx2', 'xx2', 'xx3', 'xx3', 'xx3', 'xx4'], \
'my_column' : ['id_1', 'id_2', 'id_3', 'id_1', 'id_2', 'id_3', 'id_1', 'id_2', 'id_3', 'id_1'],\
'int_column' : [3, 4, 5, 6 , 1, 3, 4, 8, 9, 1]}
df = pd.DataFrame.from_dict(data)