ピボットテーブルに2つの「行ラベル」(Excel用語)を配置した後、ピボットテーブルの値を降順でソートしようとしています。ピボットテーブルのソート(マルチインデックス)
サンプルデータ:の値によって、次に、すなわち
pt = pd.pivot_table(x, index = ['col1', 'col2'], values = 'col3', aggfunc = np.sum)
print(pt)
col3
col1 col2
a 1 1.67
2 0.75
3 0.50
b 1 0.50
2 2.25
3 2.00
c 1 2.65
2 2.50
3 2.75
、この変数pt
が最初col1
でソートされ:
x = pd.DataFrame({'col1':['a','a','b','c','c', 'a','b','c', 'a','b','c'],
'col2':[ 1, 1, 1, 1, 1, 2, 2, 2, 3, 3, 3],
'col3':[ 1,.67,0.5, 2,.65, .75,2.25,2.5, .5, 2,2.75]})
print(x)
col1 col2 col3
0 a 1 1.00
1 a 1 0.67
2 b 1 0.50
3 c 1 2.00
4 c 1 0.65
5 a 2 0.75
6 b 2 2.25
7 c 2 2.50
8 a 3 0.50
9 b 3 2.00
10 c 3 2.75
私は次の関数を使用している、ピボットを作成しますcol2
内、col1
内、col3
内、これは素晴らしいですが、col2
に分割されたグループを維持しながら、col3
(値)の並べ替えを行いたいと考えています(この列は任意の順序で並べ替えることができます)。私は以下のコードを試してみましたが、これは単に全体のピボットをソート
col3
col1 col2
a 1 1.67
2 0.75
3 0.50
b 2 2.25
3 2.00
1 0.50
c 3 2.75
1 2.65
2 2.50
:
ターゲット出力は、この(col1
のそのグループにcol2
で任意の順序で降順でcol3
)のようになります。グループ値を失います(私はグループ内のソートを探しています)。ガイダンスについて
pt.sort_values(by = 'col3', ascending = False)
、同様の質問を尋ねた(と答え)ここでは、私が提供される出力で成功した出力を取得できませんでしたした
私はそれから取得エラー答えはcol1
とcol3
と最後によってsort_values
そして、あなたがDataFrame
ためreset_index
が必要ValueError: all keys need to be the same shape