Python: сортировка первого столбца по двум другим связанным столбцам - PullRequest
0 голосов
/ 28 января 2020

У меня есть файл с индексами по первым столбцам, которые пишутся случайным образом. У меня есть для каждого из этих индексов еще 2 значения, соответствующие вторым столбцам и третьим столбцам.

Например, у меня есть файл 'file.dat', например:

2 0.9 1.0
1 0.5 2.6
10 11.2 3.1
87 32.1 8.2
...
...
100 1.2 9.8
103 0.7 0.6

Единственный В SO я нашел способ:

Photoz_tab = np.loadtxt('file.dat')
Photoz_tab = sorted(Photoz_tab, key=lambda a_entry: a_entry[0])

Таким образом, я могу отсортировать первый индекс, сохранив при этом связанные с ними 2 других значения.

Но, похоже, есть и другое решение ( что на самом деле не работает):

Photoz_tab = np.loadtxt('file.dat')
idx = np.argsort(Photoz_tab[:,0])
Photoz_tab = Photoz_tab[idx,:,:]

Но второе и третье значения не сохраняются для первого отсортированного индекса.

Итак, мой вопрос состоит в том, чтобы знать, как сохранить этот порядок:

просто:

Photoz_tab = Photoz_tab[idx,idx,idx] достаточно? Сейчас я собираюсь протестировать, информирую вас.

ОБНОВЛЕНИЕ 1: синтаксис Photoz_tab = Photoz_tab[idx,:,:] выдает ошибку.

Вместо этого нужно исправить:

Photoz_tab = Photoz_tab[idx][:][:] и, похоже, дает желаемый результат.

С уважением

1 Ответ

1 голос
/ 28 января 2020

Если вы не возражаете против использования pandas, это очень легко сделать в DataFrame. Преимущество использования этого в том, что индекс DataFrame гарантирует, что ваши данные имеют уникальный индекс, иначе он выдаст ошибку. Кроме того, вы будете иметь преимущество в легкой обработке данных.

df = pd.read_csv("/root/to/folder/test.dat", index_col=0, header=None, sep=' ').sort_index()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...