对嵌套列表进行dict理解以过滤多个变量的值

时间:2015-08-27 23:58:31

标签: python select dictionary pandas nested

我在迭代的列表上有一个关于字典理解的工作示例:这会产生各种指标(选择),将我的数据行分成几个案例(顺便说一句,它们不是独占的)。

对于上下文:当我将表聚合到某些组时,这样做是为了计算特定行的情况(由列定义的标准)。这些指标现在收集在单独的数据框中,以便单独导出,但我也很乐意将所有数据框保存在单个聚合,连接和导出中,如果可能的话。

现在我想把它嵌入另一个循环中。该循环将定义我为值选择/过滤的其他变量。因此,项目0仍然是条件本身(指标的总和是案例的计数),但是项目1是TKOST的选定案例(稍后为单独的标准查看选择性总和),项目2为另一个变量我现在读了。

但是这个循环也有意义影响变量名称,例如为计数(或neuro)设置一个空白的neuro_count变量,为神经病例等设置neuro_cost的{​​{1}}等。这怎么可能?

示例代码基本上来自亚历山大的answer另一个问题。文件I / O和TKOST部分是为上下文提供的。

pandas

1 个答案:

答案 0 :(得分:0)

您应该更喜欢明确的for循环:

for name in items.keys():
    monthly_summaries[name].append(dfs[name].groupby(['LopNr','year','month']).sum()
                                            .astype(int, copy=False)

# rather than
[monthly_summaries[name].append(dfs[name].groupby(['LopNr','year','month']).sum()
                                         .astype(int, copy=False)) 
    for name in items.keys()]

后者会创建一个None s的虚拟列表(并且可读性较差),因此效率较低。

前者允许您轻松嵌套...

  

但是这个循环也有意义影响变量名称,例如有一个空白的神经变量用于计数(或neuro_count),一个神经成本用于神经病例的TKOST总和等。这怎么可能?

我通常会添加列来执行这些计数,这样可以进行矢量化/拆分/其他 (然后不要将这些列写入csv。)