我有一个数据框,由多级索引操作生成,看起来像这样。
Col3
Col1 Col2
A A1 N
B B1 N
B2 N
C C1 N
C2 N
C3 N
我正在尝试按照A、B和C级别的行数降序排序此数据框。在这种情况下,A级有1行,B级有2行,C级有3行...因此输出将是
Col3
Col1 Col2
C C1 N
C2 N
C3 N
B B1 N
B2 N
A A1 N
我可以考虑手动计算每个级别的行数并添加一个列进行排序,但是有没有更优雅的方法?如果有,是否有一种方法可以推广到更多级别?
谢谢!
编辑:生成原始数据框的代码。
df = pd.DataFrame([['a', 'z', 'x', 0.123], ['a','z', 'x', 0.234],
['a', 'z', 'y', 0.451], ['b', 'z', 'x', 0.453], ['b', 'z', 'x', 0.453], ['b', 'z', 'x', 0.453], ['b', 'z', 'x', 0.453]],
columns=['first', 'second', 'value1', 'value2']
).set_index(['first', 'second'])
运行 df.ix[df.groupby(level=0).size().sort_values(ascending=False).index,:]
会产生 TypeError: Expected tuple, got str
错误。
df.groupby(level = 0).size() .sort_values(ascending = False).index
生成了正确值的Index对象,但实际索引失败了。有任何想法吗? - Jack Florey