Ранее я задавал несколько недостающий вопрос, который можно найти здесь .Спеша написать этот вопрос, я понял, что на самом деле поставил не ту проблему.И отличный ответ не отражает проблему, которую я пытаюсь решить.Увы, вот я снова пытаюсь.
Мои данные содержатся в панде (в столбце).Ради этой проблемы предположим, что это выглядит примерно так (где мы используем небольшую версию небольшого представления кадра данных):
array([['a', 125183.195],
['t', 125529.335],
['t', 125626.555],
['a', 125632.485],
['h', 125755.395],
['h', 125868.105],
['e', 125892.82],
['e', 126007.555],
[' ', 126113.25],
[' ', 126221.61],
['w', 126695.285],
['w', 126827.34],
['-', 127149.21],
['-', 127269.435],
['s', 127668.525],
['h', 127789.04],
['s', 127800.76],
['h', 127887.645]])
Давайте назовем весь этот массив D
.
Теперь у меня есть около 2000 таких массивов, и каждый из них имеет в среднем около 300-400 рядов.Так что здесь нет большой необходимости в производительности.
Возвращаясь к нашему списку MWE, мы заинтересованы только в упорядочении массива , используя только первый столбец :
array(['a', 't', 't', 'a', 'h', 'h', 'e', 'e', ' ', ' ', 'w', 'w','-', '-', 's', 'h', 's', 'h'])
Теперь порядок элементов в списке должен быть структурированным, как у последовательных пар (но по причинам сбора данных они не являются).Итак, вот отсортированный столбец, к которому мы стремимся:
array(['a', 'a', 't', 't', 'h', 'h', 'e', 'e', ' ', ' ', 'w', 'w','-', '-', 's', 's', 'h', 'h'])
В этом проблема: столбцы содержат почти последовательных пары элементов (числа в приведенном выше примере), но некоторые из нихвышли из строя и должны быть возвращены своему партнеру (см. выше).Чтобы еще больше усугубить проблему, второй столбец в D
является числовым, и эти записи уникальны, и они также должны следовать новому порядку.Итак, конечный результат, к которому мы стремимся, для этого минимального примера:
array([['a', 125183.195],
['a', 125632.485],
['t', 125529.335],
['t', 125626.555],
['h', 125755.395],
['h', 125868.105],
['e', 125892.82],
['e', 126007.555],
[' ', 126113.25],
[' ', 126221.61],
['w', 126695.285],
['w', 126827.34],
['-', 127149.21],
['-', 127269.435],
['s', 127668.525],
['s', 127800.76],
['h', 127789.04],
['h', 127887.645]])
Следовательно, важен вертикальный порядок пар символов.Место, где они появляются в массиве, является ключом к моей проблемной области, поэтому их можно перемещать только в соответствующие пары, но, кроме перемещения члена каждой пары, член первой пары не может двигаться.
Несколько вещейдля наблюдения:
- Производительность на самом деле не является проблемой, поскольку их нужно будет отсортировать только один раз.
- Образец не в порядке не соответствует и в каждом столбце многое меняется, важно то, что каждый элемент сопоставляется с его партнером.
- Элементы в первом столбце всегда отображаются в виде пар.
Я ищу помощь с методом, который может сортировать строки D
в требуемый порядок пары.Спасибо и извинения за мой первый неверно заданный вопрос.