私は、このようなマルチインデックス操作によって生成されたデータフレームを持っています。パンダマルチインデックスを数え順に並べ替えますか?
Col3
Col1 Col2
A A1 N
B B1 N
B2 N
C C1 N
C2 N
C3 N
Iは、レベルAの行の下降カウントすることによって、このデータフレームを分類しようとしている、B、およびCは、この場合には、レベルAの1行を有し、Bは2列を有し、そしてCは有します3行...ので、出力は
だろう私は、ソートし、実際には各レベルでの行数をカウントし、DFに列を追加することで、手動でこれを行うと考えることができ、より多くのがありますエレガントな方法?もしそうなら、より多くのレベルに一般化する方法はありますか?
ありがとうございました!
EDIT:元のデータフレームを生成するコード。 df.ix[df.groupby(level=0).size().sort_values(ascending=False).index,:]
を実行
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'])
は、あなたが最初のインデックスレベルでgroupby
でそれを行うとsize
をソートし、あなたのDFにREINDEXするこれを使用することができTypeError: Expected tuple, got str
私はあなたの提案したメソッドを実行すると、 'TypeError:Expected tuple、str'を取得します。 'df.groupby(level = 0).size()。sort_values(ascending = False).index'は正しい値を持つIndexオブジェクトを生成しますが、実際のインデックス作成は失敗しています。何か案は? –
あなたはどのバージョンのパンダを使用していますか?私は0.18.0を実行しており、これは正常に動作します – EdChum
私はパンダを使用しています:0.18.1。 –