我有一个用例,我需要在另一个通常是列表的参数上应用函数参数。示例我可能需要在列表中应用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”。任何帮助做这个技巧的人都表示赞赏。
答案 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)))
感谢提示