對於單索引的數據幀,列該組中可用的對象:如何在pandas中的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'"
作爲一個解決方法,它可以工作,但效率不高,因爲它不使用cpythonized聚合器,更不用說它看起來很尷尬。
df.groupby([('c','a')]).apply(lambda df: df[('c', 'b')].sum())
有沒有辦法訪問我錯過的groupby對象中的MultiIndex列?
你的'( 'C', 'B')後添加一個逗號'元組似乎工作:'df.groupby([( 'C',」一個 ')])[(' C」, 'b'),]。總和()'。我猜測沒有逗號,熊貓只是將它們解釋爲單獨的項目。 – root