我按如下方式创建我的数据集(故意无序):
pa = pd.MultiIndex.from_tuples([('1', '2'),('2', '1'),('1', '4'),('1', '5'),('1', '3'),('2', '2'),('2', '3'),('3', '1'),('3', '2'),('1', '1')]
, names=['batch', 'run'])
yld=pd.DataFrame(np.random.randn(10,1),index=pa,columns=['yield'])
当我尝试对batch
& run
索引列:
yld.sort_index(['batch','run'])
我得到TypeError: unhashable type: 'list'
我不知道出了什么问题......
答案 0 :(得分:1)
因为sort_index的位置从axis
开始,然后是level
,那么您必须使用level=
,请参阅下面的sort_index签名:
签名:yld.sort_index(axis = 0,level = None,ascending = True,inplace = False,kind ='quicksort',na_position ='last',sort_remaining = True,by = None)
因此正确的语法是@Wen建议的。
yld.sort_index(level=['batch','run'])
或
yld.sort_index()
因为级别会自动对外部的索引级别进行排序。