Pandas排序索引抛出“unhashable type:'list'”错误

时间:2018-03-30 19:42:33

标签: pandas dataframe indexing

我按如下方式创建我的数据集(故意无序):

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'

我不知道出了什么问题......

1 个答案:

答案 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()

因为级别会自动对外部的索引级别进行排序。