У меня есть следующий пандас с MultiIndex.
Мне нужно отсортировать сначала по 'Ccy', а затем по 'Spot'. Проблема в том, что индекс «Spot» - это строки, поэтому он не сортируется должным образом.
import pandas as pd
import numpy as np
idx = pd.MultiIndex.from_product([['USDCLP', 'USDMXN', 'USDBRL','EURUSD'],
['500.50', '33.5', '109.40','88','101.89','1103.18']],
names=['Ccy', 'Spot'])
col = ['A', 'B', 'C']
df = pd.DataFrame(np.nan, idx, col)
df = df.sort_index(level=['Ccy','Spot'], ascending=True)
print df
A B C
Ccy Spot
EURUSD 101.89 NaN NaN NaN
109.40 NaN NaN NaN
1103.18 NaN NaN NaN
33.5 NaN NaN NaN
500.50 NaN NaN NaN
88 NaN NaN NaN
USDBRL 101.89 NaN NaN NaN
109.40 NaN NaN NaN
1103.18 NaN NaN NaN
33.5 NaN NaN NaN
500.50 NaN NaN NaN
88 NaN NaN NaN
USDCLP 101.89 NaN NaN NaN
109.40 NaN NaN NaN
1103.18 NaN NaN NaN
33.5 NaN NaN NaN
500.50 NaN NaN NaN
88 NaN NaN NaN
USDMXN 101.89 NaN NaN NaN
109.40 NaN NaN NaN
1103.18 NaN NaN NaN
33.5 NaN NaN NaN
500.50 NaN NaN NaN
88 NaN NaN NaN
Я попытался сначала преобразовать индекс в число с плавающей точкой, чтобы потом отсортировать его так:
df = df.index.levels[1].astype('float')
df = df.sort_index(level=['Ccy','Spot'], ascending=True)
Но выдайте следующую ошибку:
AttributeError: 'Float64Index' object has no attribute 'sort_index'
Как отсортировать индекс «Spot» по возрастанию?