如何在lambda中运行嵌套循环,其中一个值来自字典,而一个键有多个值



我想在python中使用lambda在数据帧中创建一个新列,在这个列中,我必须在一个键有多个值的dict上运行一个循环,并将其映射到其他变量,如果有两个值被分配给一个键,则dict中的每个值都在该变量上运行循环。

下面是我写的代码,但无法将每个dict值映射为一个值对作为整个

acc['metric'] = acc.apply(lambda x: f'{kind}.{squ.units}.{inv}.{self.name}.{x.label}', axis=1)

所以这里squ有一个键值对,其中单位key在一点上有多个值。

度量列输出类似于-

day.{'cde','abc'}.dev.bde.ops
day.{'test','rmp'}.sand.sab.ops

但我希望输出是-

day.cde.dev.bde.ops
day.abc.dev.bde.ops
day.test.sand.sab.ops
day.rmp.sand.sab.ops

有人能建议一下如何做到这一点吗?

您可以循环遍历squ.units的值,返回一个列表,然后在列metric上explode((。

acc['metric'] = acc.apply(lambda x: [f'{kind}.{unit}.{inv}.{self.name}.{x.label}' for unit in squ.units], axis=1)
acc_ = acc.explode('metric')

最新更新