Сортировка столбцов по дате строки [дубликат]

Я написал небольшую библиотеку, которая анализирует аргументы, похожие на POpt, с которыми у меня было несколько проблем, называемых XOpt . Использует разбор аргументов в стиле GNU и имеет очень похожий интерфейс с POpt.

Я использую его время от времени с большим успехом, и он работает практически где угодно.

0
задан zvone 10 September 2016 в 19:17
поделиться

4 ответа

Вы можете использовать axis=1 при вызове sort :

df.sort(axis=1, ascending=False)   

>>       z  y  x
      a  1  4  7
      b  8  5  1
      c  3  6  9

Обратите внимание, что sort не помещается по умолчанию, поэтому либо переназначьте его возвращаемое значение, либо используйте inplace=True.

2
ответ дан DeepSpace 16 August 2018 в 05:24
поделиться
  • 1
    Я думаю, что это просто сортировка имен столбцов, а не значений в строке a. – user2285236 14 August 2016 в 11:34

Вы можете использовать метод reindex_axis:

>>> df.reindex_axis(sorted(df.columns, key=lambda x: df[x]['a']), axis=1)
   z  y  x
a  1  4  7
b  8  5  1
c  3  6  9
3
ответ дан taras 16 August 2018 в 05:24
поделиться
In [7]: df.iloc[:, np.argsort(df.loc['a'])]
Out[7]: 
   z  y  x
a  1  4  7
b  8  5  1
c  3  6  9

np.argsort возвращает индексы, которые будут использоваться для сортировки строки a, df.loc['a']:

In [6]: np.argsort(df.loc['a'])
Out[6]: 
x    2
y    1
z    0
Name: a, dtype: int64

. Когда у вас есть эти индексы, вы можете использовать их для изменения порядка столбцов df (с помощью df.iloc).

5
ответ дан unutbu 16 August 2018 в 05:24
поделиться

В v0.19 вы можете сортировать по строкам:

pd.__version__
Out: '0.19.0rc1'

df.sort_values(by='a', axis=1)
Out: 
   z  y  x
a  1  4  7
b  8  5  1
c  3  6  9
1
ответ дан user2285236 16 August 2018 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: