、列はオブジェクトによってグループ内に用意されていますパンダでgroupbyの後にMultiIndex列にアクセスするには?単一インデックスデータフレームで
df1 = pd.DataFrame({'a':[2,2,4,4], 'b': [5,6,7,8]})
df1.groupby('a')['b'].sum() ->
a
2 11
4 15
しかし、マルチインデックスのデータフレームにレベルによってグループ化していないとき、列はオブジェクト
によってグループにアクセスできなくなりますdf = pd.concat([df1, df1], keys=['c', 'd'], axis=1)
df ->
c d
a b a b
0 2 5 2 5
1 2 6 2 6
2 4 7 4 7
3 4 8 4 8
df.groupby([('c','a')])[('c','b')].sum() ->
KeyError: "Columns not found: 'b', 'c'"
回避策として、これはうまくいきますが、cpython化されたアグリゲータを使用していないので効率的ではありません。
df.groupby([('c','a')]).apply(lambda df: df[('c', 'b')].sum())
私が逃したgroupbyオブジェクトのMultiIndex列にアクセスする方法はありますか?私はカンマなしで、パンダはちょうど別の項目としてそれらを解釈していることを推測している
df.groupby([('c','a')])[('c','b'),].sum()
:
はカンマを追加しますa ')])[(' c '、' b ')、]。sum() '。私はカンマがなければ、パンダはちょうど別々のアイテムとしてそれらを解釈していると思います。 – root