Мой вопрос касается наиболее эффективного способа снова и снова применять одну и ту же функцию к объекту группы 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)