【发布时间】:2021-09-08 13:34:13
【问题描述】:
我想根据多列的自定义顺序对数据框的行重新排序。
说,我有以下df:
import pandas as pd
df = pd.DataFrame.from_dict({'Name': {0: 'Tim', 1: 'Tim', 2: 'Tim', 3: 'Ari', 4: 'Ari', 5: 'Ari', 6: 'Dan', 7: 'Dan', 8: 'Dan'}, 'Subject': {0: 'Math', 1: 'Science', 2: 'History', 3: 'Math', 4: 'Science', 5: 'History', 6: 'Math', 7: 'Science', 8: 'History'}, 'Test1': {0: 10, 1: 46, 2: 54, 3: 10, 4: 83, 5: 39, 6: 10, 7: 58, 8: 10}, 'Test2': {0: 5, 1: 78, 2: 61, 3: 7, 4: 32, 5: 43, 6: 1, 7: 28, 8: 50}})
看起来像这样
Name Subject Test1 Test2
Tim Math 10 5
Tim Science 46 78
Tim History 54 61
Ari Math 10 7
Ari Science 83 32
Ari History 39 43
Dan Math 10 1
Dan Science 58 28
Dan History 10 50
我想先按照自定义顺序['Dan','Tim','Ari']按Name排序,然后按照自定义顺序['Science','History','Math']按Subject排序。
所以我最终的df 应该是这样的
Name Subject Test1 Test2
Dan Science 58 28
Dan History 10 50
Dan Math 10 1
Tim Science 46 78
Tim History 54 61
Tim Math 10 5
Ari Science 83 32
Ari History 39 43
Ari Math 10 7
这似乎是一件简单的事情,但我不知道该怎么做。我能找到的最接近的解决方案是如何根据单个列 here 自定义重新排序行。我希望能够同时为多个列执行此操作。
【问题讨论】: