2
私は以下の問題に直面しています。複数のインデックスを持つPandas div
df = pd.DataFrame(np.random.randint(2, 8, size = (8, 1)))
df.index = pd.MultiIndex.from_tuples([(1990, 'Women','type_A'), (1990, 'Women','type_B'),(1990, 'Men','type_A'), (1990, 'Men','type_B'),
(1991, 'Women','type_A'), (1991, 'Women','type_B'),(1991, 'Men','type_A'), (1991, 'Men','type_B')])
df.index.names = ['Year', 'Gender','Type']
df.columns = ['Total']
次のようになります:私はYear
によって各Type
とGender
のシェアを計算しようとしているが、私は見つかっていない
Total
Year Gender Type
1990 Women type_A 5
type_B 7
Men type_A 6
type_B 2
1991 Women type_A 2
type_B 6
Men type_A 3
type_B 5
私は(ここでは3)複数のインデックスを持つデータフレームを持っていますSOFに関する明確な答え。私は、次のdf取得する必要があり、一日の終わりに:
Share
Year Gender Type
1990 Women type_A 0.4166
type_B 0.5833
Men type_A 0.7500
type_B 0.2500
1991 Women type_A 0.2500
type_B 0.7500
Men type_A 0.3750
type_B 0.6250
通常は、私がdiv
機能を使用してそれを行うだろうが、複数のインデックスと、ここで動作するようには思えません。誰かが同様の状況に直面していますか?前もって感謝します !
ありがとう、私はあなたを愛しています。レベル[0,1]はどういう意味ですか?インデックス0は年、インデックス1は性別のように共有を計算するためのインデックスを定義する場所ですか?さらに、 'df/df.groupby(level = [0、1])。sum()'が機能しないのはなぜですか? –
'level' [0,1]はマルチインデックスのレベルを意味するので、マルチインデックスは合計3レベル、0と1はそれぞれ最初の2つのレベル' year'と 'Gender'を表します。 'groupby()。sum()'構文はデータフレームをより小さい次元に縮小するので、 'df/df.groupby(level = [0,1])。sum()'は機能しません。分割を失敗させる元のデータフレームと一致する。一方、 'transform'はデータフレームの形状を保持しますが、集約された値を生成します。 – Psidom