2017-02-14 8 views
1

У меня есть DataFrame с большим количеством столбцов. Я хочу, чтобы первый столбец был моим первым индексом, 5-й столбец - моим индексом второго уровня, а мой 15-й столбец - моим индексом третьего уровня. Как я могу это сделать? Пожалуйста, простите меня за то, что вы не предоставили вам этот DataFrame, поскольку он длинный.Повернуть столбцы на многоуровневые индексы pandas

Другими словами, предположим, я следующий код

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'], 
    ...:   ['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']] 
tuples = list(zip(*arrays)) 
index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) 
s = pd.DataFrame(np.random.randn(8, 4), index=arrays) 
s1=s.reset_index(drop=0) 
s1 

Как я мог бы превратить s1 в s?

ответ

2

Вы можете использовать set_index, чтобы выполнить это.

>>> s1.set_index(['level_0', 'level_1'], drop=True) 
         0   1   2   3 
level_0 level_1           
bar  one  -0.300791 0.013540 0.713098 -0.359717 
     two  1.044732 -0.364056 1.055409 0.341651 
baz  one  0.340860 0.092612 -0.275117 0.271777 
     two  0.-0.254870 0.745544 -1.787725 
foo  one  -0.594016 -0.034900 -0.495453 0.153198 
     two  0.852272 -2.460928 -0.248302 0.534830 
qux  one  -0.396236 0.302698 1.791999 0.422901 
     two  1.379244 -0.612005 -0.614633 -0.538105