使用多索引对数据框进行排序

时间:2019-12-19 12:56:43

标签: python pandas

一个简单的例子,假设我有这个DataFrame:

raw = pd.DataFrame(np.array([
    [1, 2, 5, 'User 1', 5],
    [1, 2, 3, 'User 2', 3],
    [1, 2, 2, 'User 3', 5],
    [3, 2, 4, 'User 4', 7],
    [3, 2, 3, 'User 5', 2],
    [3, 1, 6, 'User 6', 5],
    [2, 2, 6, 'User 7', 1],
    [2, 2, 5, 'User 8', 4],
    [2, 2, 3, 'User 9', 8],
]), columns=['a', 'b', 'c', 'd', 'e'])

以及该代码下方:

raw.set_index(['a', 'b', 'c'], inplace=True)
raw.sort_index()
raw.head(9)

输出如下:

The output of the Dataframe

与其先按a,然后按b,然后按c对其进行排序,不如将其排序。 (整行) 怎么解决?

1 个答案:

答案 0 :(得分:1)

添加inplace=True参数DataFrame.sort_index

raw.sort_index(inplace=True)

或将输出分配回去:

raw = raw.sort_index()

print (raw)
            d  e
a b c           
1 2 2  User 3  5
    3  User 2  3
    5  User 1  5
2 2 3  User 9  8
    5  User 8  4
    6  User 7  1
3 1 6  User 6  5
  2 3  User 5  2
    4  User 4  7