如何解决在大熊猫groupby-aggregate
我的代码中有以下类型的许多聚合:
period = 'ag'
index = ['PA']
lvl = 'pa'
wm = lambda x: np.average(x,weights=dfdom.loc[x.index,'pop'])
dfpa = dfdom[(dfdom['stratum_kWh'] !=8)].groupby(index).agg(
pa_mean_ea_ag_kwh = ('mean_ea_'+period+'_kwh',wm),pa_pop = ('dom_pop','sum'))
直接建立聚合方程式的右侧。我还想动态地构建聚合方程的左侧,以便可以将“ dom”,“ ea”,“ ag”和“ kw / kwh / thm”全部创建为变量输入,并根据我使用的过程进行选择。 m正在执行。这将大大减少需要编写的代码量,并且更新也将更易于管理,因为否则我需要为上述每种组合编写单独的,否则相同的代码。
我可以使用eval来做到这一点吗?我会很乐意提供指导。谢谢。
添加VaidøtasI.反馈后编写的代码:
index = ['PA']
lvl = 'pa'
fname = lvl+"_pop"
b = f'dfdom.groupby({index}).agg({lvl}_pop = ("dom_pop","sum"))'
dfpab = exec(b)
以上内容的输出是“ NoneType对象”。如果我将变量b中的文本抬起并直接运行如下所示的代码,则会得到一个数据框。
dfpab = dfdom.groupby(['PA']).agg(pa_pop = ("dom_pop","sum"))
(我简化了原始示例,以更好地与添加的第二个代码联系起来。)
解决方法
使用exec(),eval()有所不同
例如:
exec(f"variable_name{added_namepart} = variable_value{added_valuepart}")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。