1

データ フレームにピボット テーブルがあり、グループの割合を計算したいと考えています。

例えば: ピボット データのサンプル

そして私が必要とするのは: 希望の出力

私は元のデータを除外しましたが、それがあることを期待しており、これらの列を追加する必要があることを知っています.

これを行うために合計を追加する必要がある場合は、後で結果をフィルタリングするので、それも問題ありません。

4

3 に答える 3

1

あなたの例は、インデックスにあるものとないものを実際には示していません。

独自のデータセットを作成しました:

df = pd.DataFrame({'country':["NL"]*9, 'team':["A"]*3+["B"]*3+["C"]*3, 'outcome':["WIN", "LOSE", "DRAW"] * 3, 'week1':[2,3,4,4,5,2,4,4,2], 'week2':[3,2,5,2,3,4,2,3,4], 'week3':[4,5,2,3,2,5,3,2,5]})
df.set_index(['country', 'team'], inplace=True)

私もチームCを作ったことに注意してください。チームBが2人だから意味がない。間違いだと思いました。

私の例では、次のように簡単に実行できます。

df_percent = df / df.groupby(level=[0,1]).sum()
df_percent['outcome'] = df['outcome']

             outcome     week1     week2     week3
country team                                      
NL      A        WIN  0.222222  0.300000  0.363636
        A       LOSE  0.333333  0.200000  0.454545
        A       DRAW  0.444444  0.500000  0.181818
        B        WIN  0.363636  0.222222  0.300000
        B       LOSE  0.454545  0.333333  0.200000
        B       DRAW  0.181818  0.444444  0.500000
        C        WIN  0.400000  0.222222  0.300000
        C       LOSE  0.400000  0.333333  0.200000
        C       DRAW  0.200000  0.444444  0.500000
于 2015-08-14T14:56:04.463 に答える