繁体   English   中英

Groupby 应用或 agg 与自定义 function 与多个输入

[英]Groupby apply or agg with custom function with multiple inputs

我想将自定义函数应用于 pandas groupby function。

当我的自定义 function 只有 1 个输入(即分组值)时,我能够申请。

我有这样的 dataframe :

a     b     c      value
a1    b1    c1      v1
a2    b2    c2      v2
a3    b3    c3      v3

适用版本:

def cpk(a):
    arr = np.asarray(a)
    arr = arr.ravel()
    sigma = np.std(arr)
    m = np.mean(arr)

    Cpu = float(150 - m) / (3*sigma)
    Cpl = float(m - 50) / (3*sigma)
    Cpk = np.min([Cpu, Cpl])
    return Cpk


df_cpk = df_result.groupby(['a','b','c'])['value'].agg(cpk).reset_index()

正如您在上面的代码中看到的,分组的“值”自动 go 到cpk function 的输入。

我想知道的是如何在function下面申请:

def cpk2(a,lsl,usl):
    arr = np.asarray(a)
    arr = arr.ravel()
    sigma = np.std(arr)
    m = np.mean(arr)

    Cpu = float(usl - m) / (3*sigma)
    Cpl = float(m - lsl) / (3*sigma)
    Cpk = np.min([Cpu, Cpl])
    return Cpk

# df_cpk = df_result.groupby(['a','b','c'])['value'].agg(cpk2(?,?,?)).reset_index()

function 有多个输入,其中一个是组值。 有什么简单的方法吗?

由于其他两个输入是常量,您可以简单地使用lambda 表达式

df_cpk = df.groupby(['a','b','c'])['value'].agg(lambda x: cpk2(x, 50, 150)).reset_index()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM