我有一个排序请求下面的例子。
我需要重新设置索引(),然后排序(),然后设置索引()还是有一种巧妙的方法?
l = [[1,'A',99],[1,'B',102],[1,'C',105],[1,'D',97],[2,'A',19],[2,'B',14],[2,'C',10],[2,'D',17]]
df = pd.DataFrame(l,columns = ['idx1','idx2','col1'])
df.set_index(['idx1','idx2'],inplace=True)
# assume data has been received like this...
print df
col1
idx1 idx2
1 A 99
B 102
C 105
D 97
2 A 19
B 14
C 10
D 17
# I'd like to sort descending on col1, partitioning within index level = 'idx2'
col1
idx1 idx2
1 C 105
B 102
A 99
D 97
2 A 19
D 17
B 14
C 10
谢谢你的回答 注:我稍微更改了数据:
l = [[1,'A',99],[1,'B',11],[1,'C',105],[1,'D',97],[2,'A',19],[2,'B',14],[2,'C',10],[2,'D',17]]
df = pd.DataFrame(l,columns = ['idx1','idx2','col1'])
df.set_index(['idx1','idx2'],inplace=True)
df = df.sort_index(by='col1', ascending=False)
但是输出是
idx1 idx2
1 C 105
A 99
D 97
2 A 19
D 17
B 14
1 B 11
2 C 10
我本想是的
idx1 idx2
1 C 105
A 99
D 97
B 11
2 A 19
D 17
B 14
C 10
你需要^{} 、^{} 和^{} :
编辑:
对于版本
0.23.0
可以使用columns and index levels together(但如果现在使用ascending=[True, False]
,那么在较新版本中可能会出现错误):您可以使用
sort_index
:这将输出:
这首先按所需的列进行排序,仅在idx1多索引级别上进行排序,并在最新的pandas版本中工作,该版本不支持
by
kwarg。输出:
相关问题 更多 >
编程相关推荐