Запуск одной и той же функции применения несколько раз в группе панд с разными параметрами, передаваемыми каждый раз - PullRequest
1 голос
/ 25 мая 2019

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

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

import pandas as pd
import numpy as np

df = pd.DataFrame({
        'group': np.repeat(['A', 'B', 'C'], 3),
        'values': np.arange(2, 20, 2)
    })


def simple_function(data, value):
    new_df = data.sum() + value
    new_df['added'] = value
    return new_df

Функция simple_function суммирует через df, добавляет значение к этой сумме и создает новый столбец, который содержит добавленную стоимость.

Я знаю, как использовать применить на индивидуальный случай:

new_df_add_five = df.groupby('group').apply(simple_function, 5)

"""
Returns:
       values  added
group               
A          17      5
B          35      5
C          53      5
"""

new_df_add_six = df.groupby('group').apply(simple_function, 6)

Но предположим, что теперь я хочу объединить результаты new_df_add_five и new_df_add_six together, чтобы получить что-то вроде этого:

"""
       values  added
group               
A          17      5
B          35      5
C          53      5
A          18      6
B          36      6
C          54      6
"""

Есть ли способ достичь этого без использования цикла for для параметров ?:

pd_list = []
for param in [5, 6]:
    pd_list.append(df.groupby('group').apply(simple_function, param))

combined_df = pd.concat(pd_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...