好吧,这是一个可以解决两个问题的快捷方式(但对于加权均值仍然需要使用其他功能)。通常,它使用此处的技巧(贷记@DSM)来执行 *** 作以避开空的组
groupby(lamda x:True)。如果在手段之类的东西上存在“权重”的扭曲,但据我所知没有,那将是很棒的。显然有是提到加权位数包这里基于numpy的,但我不知道这件事。伟大的项目顺便说一句!
(请注意,名称与您的名称基本相同,我只是在wmean_grouped和my_summary中添加了“ 2”,否则您可以使用相同的调用接口)
def wmean_grouped2 (group, var_name_in, var_name_weight): d = group[var_name_in] w = group[var_name_weight] return (d * w).sum() / w.sum()FUNCS = { "mean" : np.mean , "sum" : np.sum , "count" : np.count_nonzero }def my_summary2 ( data , var_names_in , var_names_out , var_functions , var_name_weight = None , var_names_group = None ): result = pd.Dataframe() if var_names_group is None: grouped = data.groupby (lambda x: True) else: grouped = data.groupby (var_names_group) for var_name_in, var_name_out, var_function in zip(var_names_in,var_names_out,var_functions): if var_function == "wmean": func = lambda x : wmean_grouped2 (x, var_name_in, var_name_weight) result[var_name_out] = pd.Series(grouped.apply(func)) else: func = FUNCS[var_function] result[var_name_out] = grouped[var_name_in].apply(func) return result
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)