2015-10-20 118 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