我试图在多级索引中对数据进行分类,以实现可视化。此时,纯粹是根据值对数据进行排序。
我尝试过使用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欢迎任何想法或建议。
谢谢!
发布于 2019-05-20 11:36:30
对于 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']))https://stackoverflow.com/questions/56220188
复制相似问题