循环创建多个数据框

Yan Song

我有一个人口数据。我想为每个州和年份创建单独的数据框。这个想法如下:

for i in province_id:
    for j in year:
         sub_data_i_j = data[(data.provid==i) &(data.wave==j)]

但是,我不确定如何动态生成sub_data_i_j。

Ken Wei

应该这样做:

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章