Python 使用多索引对数据帧进行排序
一个简单的例子,假设我有这个数据帧:Python 使用多索引对数据帧进行排序,python,pandas,Python,Pandas,一个简单的例子,假设我有这个数据帧: 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], [
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)
输出如下所示:
而不是先按a
排序,然后按b
排序,然后按c
排序。(整排)
如何解决此问题?添加
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
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