我正在尝试对多级索引中的数据进行可视化处理。 此时,纯粹是根据值
对数据进行排序我已经尝试使用sort_index和sort_values,但是都没有用。 我假设有一种方法可以合并我不知道的2。
import pandas as pd
data = {'lev1':[1,1,2,2],
'lev2':['item1', 'item2', 'item3', 'item2'],
'col1':[.55, .44, .22, .34],
'col2':[.54, .86, .55, .44]}
df = pd.DataFrame(data=data)
df.set_index(['lev1', 'lev2'], inplace=True)
col1 col2
lev1 lev2
1 item1 0.55 0.54
item2 0.44 0.86
2 item3 0.22 0.55
item2 0.34 0.44
我想看到的是根据col2中的值排序的输出。但是,保持多级索引不变。
col1 col2
lev1 lev2
1 item2 0.44 0.86
item1 0.55 0.54
2 item3 0.22 0.55
item2 0.34 0.44
欢迎提出任何想法或建议。
谢谢!
答案 0 :(得分:4)
对于 pandas 0.23 + ,可以按DataFrame.sort_values
按索引和按列排序:
df = df.sort_values(['lev1','col2'], ascending=[True, False])
print (df)
col1 col2
lev1 lev2
1 item2 0.44 0.86
item1 0.55 0.54
2 item3 0.22 0.55
item2 0.34 0.44
对于较低版本的熊猫,必须DataFrame.reset_index
,先排序,然后DataFrame.set_index
:
df = (df.reset_index()
.sort_values(['lev1','col2'], ascending=[True, False])
.set_index(['lev1','lev2']))