поменять местами две строки в мультииндексном панде - PullRequest
0 голосов
/ 21 сентября 2018

Для простой таблицы, такой как:

df = pd.DataFrame([[1,2,3],[4,5,6]], index=['a','b'])

   0  1  2
a  1  2  3
b  4  5  6

мы можем поменять две строки 'a' и 'b', вызвав:

df.loc[['b','a'],:]
Out[21]: 
   0  1  2
b  4  5  6
a  1  2  3

Я ожидал, что loc ()call имеет тот же эффект для следующей многоуровневой индексной таблицы:

df = pd.DataFrame(np.arange(12).reshape((4, 3)),
    index=[['a', 'a', 'b', 'b'], [1, 2, 1, 2]],
    columns=[['Ohio', 'Ohio', 'Colorado'],
    ['Green', 'Red', 'Green']])

     Ohio     Colorado
    Green Red    Green
a 1     0   1        2
  2     3   4        5
b 1     6   7        8
  2     9  10       11

, но при запуске:

df.loc[['b','a'],:]

Таблица остается прежней.

Iхотя можно поменять строки, вызвав следующее:

df.reindex(index=['b', 'a'], level=0)

     Ohio     Colorado
    Green Red    Green
b 1     6   7        8
  2     9  10       11
a 1     0   1        2
  2     3   4        5

Что случилось с моим df.loc[['b','a'],:]?

...