當對熊貓羣組操作的結果執行過濾時,它會返回一個數據幀。但假設我想進行進一步的組計算,我不得不再次調用groupby,這看起來有點像。有沒有更習慣於這樣做的方式?如何過濾Pandas GroupBy對象並獲取GroupBy對象?
編輯:
爲了說明什麼我談論:
我們無恥地從大熊貓文檔偷玩具數據幀,並組:
>>> dff = pd.DataFrame({'A': np.arange(8), 'B': list('aabbbbcc')})
>>> grouped = dff.groupby('B')
>>> type(grouped)
<class 'pandas.core.groupby.DataFrameGroupBy'>
這會返回一個GROUPBY對象,我們可以迭代,執行組合操作等。但是,如果我們過濾:
>>> filtered = grouped.filter(lambda x: len(x) > 2)
>>> type(filtered)
<class 'pandas.core.frame.DataFrame'>
我們找回一個數據幀。是否有一種很好的慣用方式來獲取過濾後的組,而不僅僅是屬於過濾組的原始行?
請舉個例子說說你在說什麼。 – BrenBarn
我認爲這是一個很好的queston,在SQL中你可以將groupby和filter結合起來作爲'SELECT用戶,SUM(喜歡)GROUP BY用戶HAVING sum(喜歡)> 10',而在熊貓中你將不得不做'df。 groupby('user')。filter(lambda x:len(x)> 10).groupby('user')。likes.sum()';也許答案是在'groupby'中包含filter關鍵字或在'filter'中包含'as_index'關鍵字? – maxymoo
@BrenBarn:添加示例。 –