2015-12-22 2 views
3

Привета есть мультииндексные dataframe:панда: преобразующий тип индекса в мультииндексных dataframe

tuples = [('YTA_Q3', 1), ('YTA_Q3', 2), ('YTA_Q3', 3), ('YTA_Q3', 4), ('YTA_Q3', 99), ('YTA_Q3', 96)] 
# Index 
index = pd.MultiIndex.from_tuples(tuples, names=['Questions', 'Values']) 
# Columns 
columns = pd.MultiIndex.from_tuples([('YTA_Q3', '@')], names=['Questions', 'Values']) 
# Data 
data = [29.014949,5.0260590000000001, 
    6.6269119999999999, 
    1.3565260000000001, 
    41.632221999999999, 
    21.279499999999999] 

df1 = pd.DataFrame(data=data, index=index, columns=columns) 

Как преобразовать внутренние значения индекса ФРА на ул?

Моя попытка:

df1.index.astype(str) 

она возвращает TypeError

ответ

3

IIUC вам нужен последний уровень мультииндексных. Вы можете получить доступ к нему с levels:

df1.index.levels[-1].astype(str) 

In [584]: df1.index.levels[-1].astype(str) 
Out[584]: Index(['1', '2', '3', '4', '96', '99'], dtype='object', name='Values') 

EDIT

Вы можете настроить свой внутренний уровень с set_levels методом мультииндексных:

idx = df1.index 
df1.index = df1.index.set_levels([idx.levels[:-1], idx.levels[-1].astype(str)]) 
+1

это хорошо, но как я обновить мою DF1 ? df1.index.levels [1] = df.index.levels [1] .astype (str) –

+0

@ Boosted_d16 попробовал отредактированную версию –

+0

, почему бы не сбросить индекс, а затем установить индекс? [real question!] – seanv507

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