我有一个人口数据。我想为每个州和年份创建单独的数据框。这个想法如下:
for i in province_id:
for j in year:
sub_data_i_j = data[(data.provid==i) &(data.wave==j)]
但是,我不确定如何动态生成sub_data_i_j。
应该这样做:
for i in province_id:
for j in year:
locals()['sub_data_{}_{}'.format(i,j)] = data[(data.provid==i) & (data.wave==j)]
我最初建议使用exec
,出于安全原因,通常不将其视为最佳实践。话虽如此,如果您的代码没有暴露给任何怀有恶意的人,那应该没问题,为了完整起见,我将其保留在此处:
for i in province_id:
for j in year:
exec "sub_data_{}_{} = data[(data.provid==i) & (data.wave==j)]".format(i,j)
但是,对于大多数用例,最好使用某种集合,例如字典,因为在代码的后续部分中引用动态生成的变量名称会很麻烦。它也是单线的:
data_dict = {key:g for key,g in data.groupby(['provid','wave'])}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句