我想在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')