[英]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.