Изменить аггфункции в pivot_tables - PullRequest
0 голосов
/ 31 октября 2019

Как я могу объединить две или более функции в сводной таблице панд?

Я хочу сделать что-то вроде:

pt = pandas.pivot_table(data, index=['Name'], values=['Grades'], aggfunc=[np.max - np.min])

Чтобы получить разницу между макс и мин.

Аналогично, есть ли способ изменить aggfunc константой? Скажем, что-то вроде:

...aggfunc=[np.max - 0.5])

(я знаю, что все это можно сделать, манипулируя базовыми данными. Но это было бы намного проще)

1 Ответ

1 голос
/ 01 ноября 2019

Вы можете передать любую функцию Python параметру aggfunc pandas.pivot_table , из документации:

aggfunc: функция, список функций, dict, значение по умолчанию. Среднее

Например, для первого случая вы можете выполнить:

Настройка

import numpy as np
import pandas as pd

data = pd.DataFrame(
    {'Name': ['bob', 'alice', 'mary', 'tom', 'bob', 'alice', 'mary', 'tom'], 'Grades': [10, 9, 8, 8, 7, 5, 6, 8]})

Код

result = pd.pivot_table(data, index=['Name'], values=['Grades'], aggfunc=lambda x: np.max(x) - np.min(x))

print(result)

Выход

       Grades
Name         
alice       4
bob         3
mary        2
tom         0
...