Как сделать вычисления фрейма данных из двух столбцов, чтобы создать другой с пользовательской функцией? - PullRequest
0 голосов
/ 09 июля 2019

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

Я пытался использовать dataframe apply и groupby, но любые предложения приветствуются.

У меня есть следующий dataframe:

    id    y       z
    115  10      820
    115  12      960
    115  13     1100
    144  25     2500
    144  55     5500
    144  65      960
    144  68     6200
    144  25     2550
    146  25     2487
    146  25     2847
    146  25     2569
    146  25     2600
    146  25     2382

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

def train_logmodel(x, y):
##.........
    return x


data.groupby('id')[['y','z']].apply(train_logmodel)


TypeError: train_logmodel() missing 1 required positional argument: 'y'

Я хотел бы знать, как передать 'y' и 'z', чтобы оценить желаемый столбец 'x' по каждому идентификатору.

Пример ожидаемого вывода:

       id   x
      115 0.23
      144 0.45
      146 0.58

Это немного отличается от вопроса: Как применить функцию к двум столбцам кадра данных Pandas

В этом случае мы имеем дело с групповым фреймом данных, который работает немного иначе, чем фрейм данных.

Заранее спасибо!

1 Ответ

0 голосов
/ 09 июля 2019

Не зная вашей функции train_logmodel, я могу привести здесь только общий пример. Ваша функция принимает один аргумент, из этого аргумента вы получаете столбцы внутри вашей функции:

def train_logmodel(data): 
    return (data.z / data.y).min()

df.groupby('id').apply(train_logmodel)

Результат:

id
115    80.000000
144    14.769231
146    95.280000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...