2016-05-31 3 views
1

У меня есть список данных, каждый из которых имеет мультииндекс. один столбец является varName, другой - «round».Изменение значений в pandas dataframe multiindex

Значения в столбце varName являются числами. У меня есть другой фрейм данных, который представляет собой сопоставление чисел с метками. Я хочу использовать map() в столбце varName, но поскольку он является частью индекса, нет столбца varName.

Я попытался скопировать столбец varname или сделать его не частью индекса, но ни одна из этих вещей не работает.

+0

[как-к-макияжа хорошего воспроизводимый-панд-примеры] (http://stackoverflow.com/questions/20109391/how- to-make-good-reproducible-pandas-examples) – MaxU

+0

На самом деле правильный ответ для этого конкретного случая оказался «сделать сопоставление данных перед тем, как этот столбец станет индексом». Что не будет работать во всех случаях, но работает для этого ... –

ответ

1

Если varName является name одного из MultiIndex уровней, вы должны быть в состоянии:

df.reset_index(level='varName') 

конвертировать varName в column, а затем использовать map(). Если varName не является name, вы все равно сможете использовать level=0 (или 1).

0

может быть, вы можете сделать что-то вроде:

df.reset_index(level=1).merge(df2) 

это если уровень = 1 Ваш общий столбец (например, «имяПерем») между двумя ДФС. если вы хотите, вы можете чем set_index для имени метки, как:

df.reset_index(level=1).merge(df2).set_index(['labels'],append=True) 

 Смежные вопросы

  • Нет связанных вопросов^_^