2015-10-20 128 views
0

假設我有以下幾點。我通過「快樂」分組,然後總結每個組。它效果很好。熊貓利用UDF聚合GroupBy對象

import pandas as pd 
testdf = pd.DataFrame({"happy": [1, 2, 1, 3], "sad": [4, 5, 6, 7], \ 
         "cool":[1, 99, 0, -5]}) 
testgb = testdf.groupby(["happy"]) 
testgb.sum() 

但是,如果我想用我自己的函數,它的值的列表,並返回一個數字,而不是Sum()什麼;像

def my_max(ilist): 
    return max(ilist) 
testgb.my_max() 

在這種情況下,輸出應爲:

happy sad cool 
1  6  1 
2  5  99 
3  7  -5 

有誰知道怎麼辦呢?我讀了如何使用自己的函數進行分組,但不進行累加

回答

1

我假設您要傳遞來自其他列的值列表,例如, sad。您可以使用agg功能

testdf = pd.DataFrame({"happy": [1, 2, 1, 3], "sad": [4, 5, 6, 7], "cool":[1, 99, 0, -5]}) 
testgb = testdf.groupby(["happy"]).agg({'sad': lambda x: max(x)}) 

當然也有可能是內置的程序來完成你有什麼考慮,但由於您構成假設的情景,這是很難說了。

+0

感謝您的幫助。我已將輸出添加到我的示例中以供參考。你的例子有效,可以很容易地擴展到我的,所以我接受這個答案。 – mt88