【问题标题】:Pandas groupby and custom agg lambda functionPandas groupby 和自定义 agg lambda 函数
【发布时间】:2020-05-30 08:23:46
【问题描述】:

我有一个数据框,我想聚合一个自定义聚合函数。

现在我拥有它就像一个预定义的函数,但我想将它称为 lambda 函数。请注意,预定义的函数有一个可以更改的参数。

from sklearn.datasets import load_boston
import pandas as pd
import numpy as np
bunch = load_boston()

y = bunch.target
X = pd.DataFrame(bunch.data, columns=bunch.feature_names)

def percentile_func(y,PERCENTILE=50):
    return np.percentile(y,PERCENTILE)

X.groupby('CHAS')['CRIM'].agg([percentile_func,'sum', 'count'])

【问题讨论】:

  • X.groupby('CHAS')['CRIM'].agg([percentile_func,'sum', 'count']) 这工作正常吗?我想这应该可行。如果不是什么是错误回溯
  • 嗨@Ch3steR,它可以工作,但我希望将它与 lambda 函数集成,正如您可以在原始问题中看到的那样,谢谢

标签: python pandas group-by aggregate


【解决方案1】:

试试这个:

X.groupby('CHAS')['CRIM'].agg([lambda x: np.percentile(x, 50),'sum', 'count'])

【讨论】:

  • 是的,我知道,但是有更多聚合器,例如“sum”或“count”?
【解决方案2】:

您可以在此处使用functools.partial

from functools import partial

f = partial(percentile_func,PERCENTILE=50) # you can change PERCENTILE value accordingly.

X.groupby('CHAS')['CRIM'].agg([f,'sum', 'count'])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-02-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 2021-06-28
    • 2018-07-18
    • 1970-01-01
    相关资源
    最近更新 更多