Как изменить порядок столбцов (сортировать) в pandastic пути? - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть фрейм данных с заголовком, который является списком 'string-integer':

import pandas as pd

d = {'1': [1, 2], '7': [3, 4], '3': [3, 4], '5': [2, 7]}
df = pd.DataFrame(data=d)

   1  3  5  7
0  1  3  2  3
1  2  4  7  4

Порядок изменения кода столбца (сортировки):

cols = df.columns.tolist()
cols = [int(x) for x in cols]
cols.sort()
cols = [str(x) for x in cols]
df = df[cols]

   1  3  5  7
0  1  3  2  3
1  2  4  7  4

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

1 Ответ

0 голосов
/ 26 апреля 2018

Есть несколько вариантов в зависимости от того, что вам нужно.

Вариант 1

Вы можете использовать sort_values для сортировки в виде строк:

df.columns = df.columns.sort_values()

Обратите внимание, это означает, что «10» появится до «2».

Вариант 2

Если вы хотите преобразовать в целые числа, а затем отсортировать:

df.columns = df.columns.astype(int).sort_values()

Вариант 3

Если вы хотите сохранить как строку, но порядок по целому числу:

df.columns = df.columns.astype(int).sort_values().astype(str)

Возможен также чистый подход Python:

df.columns = sorted(df, key=int)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...