0
エピソード3:パンダピボットテーブルネストソート第3
part 2において右端のレベル内でソートしながら、我々は、インデックスの階層的性質を保持していました。 part 1では、一番左のインデックスレベルにカスタムソートを適用し、一番右のインデックス内の値をソートしました。
今、両方の方法を組み合わせたいと思います。私は「B」のカスタムオーダーを指定したい
import pandas as pd
df=pd.DataFrame({'A':['a','a','a','a','a','b','b','b','b'],
'B':['x','y','z','x','y','z','x','y','z'],
'C':['a','b','a','b','a','b','a','b','a'],
'D':[7,5,3,4,1,6,5,3,1]})
df
A B C D
0 a x a 7
1 a y b 5
2 a z a 3
3 a x b 4
4 a y a 1
5 b z b 6
6 b x a 5
7 b y b 3
8 b z a 1
table = pd.pivot_table(df, index=['A', 'B','C'],aggfunc='sum')
table
D
A B C
a x a 7
b 4
y a 1
b 5
z a 3
b x a 5
y b 3
z a 1
b 6
:
は、次のデータフレームと結果のピボットテーブルを考えます。 は、これは動作するようです:df['B']=df['B'].astype('category')
df['B'].cat.set_categories(['z','x','y'],inplace=True)
次に、私が「B」の各カテゴリ内で降順値「D」を仕分けしながら、上に指定した「B」の順序を維持するために、ピボットテーブルのためにしたいと思います。このよう
:
D
A B C
z a 3
x a 7
a b 4
y b 5
a 1
z b 6
b a 1
x a 5
y b 3
事前に感謝!
これは私のサンプルデータに有効ですが、実際のデータでは 'C'のすべてのインスタンスを合計していないようです(つまり、 'B'の場合は 'C' 'z'と 'A'は 'a'です)。 pivot_table関数でこれを行う方法はありますか?私は試しましたが、それは 'A'にキーエラーを投げた。 –
@ DanceParty2、確かに、 "UPDATE"を参照してください – MaxU
作品!今私はちょうど方法を学ぶ必要があります。ありがとう! –