我的问题涉及最有效的方法,一次又一次地将相同的功能应用于pandas groupby对象,同时更改每次传递的参数。
假设我有以下代码创建了一个简单的数据框和一个简单的套用函数:
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)