我有以下带有多索引的熊猫数据框架。
我需要先按“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”索引进行排序?