<p>可能不是最好的方法,但据我所知,不能将函数/映射传递给<code>sort_values</code>。作为解决方法,我通常使用<code>assign</code>添加新列并按该列排序。在您的示例中,这还需要先重置索引(并将其设置回原来的位置)。</p>
<pre><code>days = {'Mon': 1, 'Tue': 2, 'Wed': 3, 'Thu': 4, 'Fri': 5, 'Sun': 6, 'Sat': 7}
f8 = f8.reset_index()
(f8.assign(day_num=f8['day'].map(days))
.sort_values(['device_id', 'day_num'])
.set_index(['device_id', 'day'])
.drop('day_num', axis=1))
Out:
0
device_id day
0d4fd55bb363bf6f6f7f8b3342cd0467 Mon 826862
Tue 792066
Wed 636451
Thu 436518
Fri 770307
Sun 1019298
Sat 953503
f6258edf9145d1c0404e6f3d7a27a29d Mon 2534895
Tue 3303173
Wed 3822616
Thu 2857429
Fri 3548178
Sun 4213633
Sat 4475221
</code></pre>