Я написал небольшую библиотеку, которая анализирует аргументы, похожие на POpt, с которыми у меня было несколько проблем, называемых XOpt . Использует разбор аргументов в стиле GNU и имеет очень похожий интерфейс с POpt.
Я использую его время от времени с большим успехом, и он работает практически где угодно.
Вы можете использовать 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
.
Вы можете использовать метод 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
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
).
В 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