python应用lambda函数

时间:2017-07-11 23:11:36

标签: python lambda aggregate

我有一个用例,我需要在另一个通常是列表的参数上应用函数参数。示例我可能需要在列表中应用min,在列表上应用max或在列表上应用总和。

def calc_df_query(select_col, agg_func, where_col, mn, mx):
    tmp = globals().get('data')[select_col][globals().get('data')[where_col].between(mn, mx, inclusive=True)]
    agg_method = lambda col,agg: agg(col)
    return (agg_method(tmp, agg_func))

作为最后一个return语句的结果,我收到错误“str object is not callable”。任何帮助做这个技巧的人都表示赞赏。

1 个答案:

答案 0 :(得分:0)

解决方案是使用字典将字符串映射到pandas.DataFrame函数

dispatcher={'min':pd.DataFrame.min, 'max':pd.DataFrame.max, 'sum': pd.DataFrame.sum, 'mean': pd.DataFrame.mean}

然后用法:

def calc_df_query(select_col, agg_func, where_col, mn, mx):
    tmp = globals().get('data')[select_col][globals().get('data')[where_col].between(mn, mx, inclusive=True)]
    agg_method = lambda col, agg: agg(col)
    return (agg_method(tmp, dispatcher.get(agg_func)))

感谢提示