метод преобразования панд не может пройти несколько методов - PullRequest
0 голосов
/ 18 сентября 2018

Я хочу передать 2 метода в transform метод панд, поскольку API говорит, что он может передавать список функций или диктовать имена столбцов -> функции.Я передаю список функций, но он не работает:

import pandas as pd
import numpy as np
df = pd.DataFrame({'rti':['a','a','b','c','b','c','a'],'ts':[10,10,9,12,9,13,11],'rs':[8,8,22,11,12,11,9]})
df.groupby('rti').transform(['mean','sum'])

Он показывает: «Ошибка типа: нечитаемый тип:« список »»

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

Работает, но используемые функции не должны быть функциями агрегирования, такими как sum, max или min.

>>> df.transform([np.abs, np.sign])
        rs            ts     
  absolute sign absolute sign
0        8    1       10    1
1        8    1       10    1
2       22    1        9    1
3       11    1       12    1
4       12    1        9    1
5       11    1       13    1
6        9    1       11    1

См. Документацию здесь . Обратите внимание, что метод transform для объектов groupby принимает только функцию (не список функций, предназначенный для метода преобразования данных).

В строке документа метода tranform объектов groupby:

Подпись: gb.transform (func, * args, ** kwargs)

строка документации: Вызовите функцию, создающую индексированный по кадрам DataFrame для каждой группы, и вернуть DataFrame, имеющий те же индексы, что и исходный объект заполнены преобразованными значениями

Параметры

f: функция Функция для применения к каждой группе

Примечания * * 1023 Каждая группа наделена атрибутом «имя» на случай, если вам нужно знать в какой группе вы работаете. Текущая реализация предъявляет три требования к f: f должен возвращать значение, которое имеет ту же форму, что и вход субкадр или может быть передан в форме входного субкадра. Например, f возвращает скаляр, который будет передан, чтобы иметь той же формы, что и входной подкадр. если это DataFrame, f должен поддерживать приложение столбец за столбцом в подрамнике. Если f также поддерживает приложение для всего подкадра, затем используется быстрый путь, начиная со второго блока. f не должен изменять группы. Мутация не поддерживается и может дают неожиданные результаты.

0 голосов
/ 18 сентября 2018

Похоже, transform не принимать список функций, Открыть вопрос в github

df.groupby('rti').agg(['mean','sum']).reindex(df.rti)
Out[12]: 
            rs             ts    
          mean sum       mean sum
rti                              
a     8.333333  25  10.333333  31
a     8.333333  25  10.333333  31
b    17.000000  34   9.000000  18
c    11.000000  22  12.500000  25
b    17.000000  34   9.000000  18
c    11.000000  22  12.500000  25
a     8.333333  25  10.333333  31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...