Pandas groupby и настраиваемая лямбда-функция agg - PullRequest
0 голосов
/ 30 мая 2020

У меня есть фрейм данных, и я хочу агрегировать пользовательскую функцию агрегирования.

Прямо сейчас у меня это как предопределенная функция, но я хочу вызвать ее как лямбда-функцию. Обратите внимание, что у предопределенной функции есть параметр, который можно изменить.

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'])

Ответы [ 2 ]

3 голосов
/ 30 мая 2020

Здесь вы можете использовать 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'])
1 голос
/ 30 мая 2020

Попробуйте следующее:

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