在熊猫分组中多次运行相同的apply函数,每次传递不同的参数

时间:2019-05-25 01:47:25

标签: python pandas pandas-groupby

我的问题涉及最有效的方法,一次又一次地将相同的功能应用于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_fivenew_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)

0 个答案:

没有答案