在大熊猫groupby-aggregate

时间:2020-10-23 12:32:22

标签: python pandas pandas-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"))

(我简化了原始示例,以更好地与添加的第二个代码联系起来。)

1 个答案:

答案 0 :(得分:0)

使用exec(),eval()有所不同

例如:

exec(f"variable_name{added_namepart} = variable_value{added_valuepart}")
相关问题