Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在lambda中运行嵌套循环,其中一个值来自字典,一个键有多个值?_Python_Python 3.x_Pandas_Dataframe - Fatal编程技术网

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

Python 如何在lambda中运行嵌套循环,其中一个值来自字典,一个键有多个值?,python,python-3.x,pandas,dataframe,Python,Python 3.x,Pandas,Dataframe,我想在dataframe中使用python中的lambda创建一个新列,在该列中,我必须在dict上运行一个循环,该循环对一个键具有多个值,并将其映射到另一个变量,如果为一个键分配了两个值,则循环对dict中的每个值运行 下面是我编写的代码,但无法映射到每个dict值,而是一个值对 acc['metric']=acc.apply(λx:f'{kind}.{squ.units}.{inv}.{self.name}.{x.label}',axis=1) 所以这里squ有一个键值对,其中单位键在一点上

我想在dataframe中使用python中的lambda创建一个新列,在该列中,我必须在dict上运行一个循环,该循环对一个键具有多个值,并将其映射到另一个变量,如果为一个键分配了两个值,则循环对dict中的每个值运行

下面是我编写的代码,但无法映射到每个dict值,而是一个值对

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

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

公制列输出类似于-

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
的值,然后在
列上返回一个列表,然后在
公制
上返回

acc['metric']=acc.apply(λx:[f'{kind}.{unit}.{inv}.{self.name}.{x.label}表示squ.units中的单位,轴=1)
acc=acc.explode(‘公制’)

我不想在day.cde.abc.dev.bde.ops中获得此输出,但希望在day.cde.dev.bde.ops和day.abc.dev.bde.ops中获得此输出。squ为dict类型,单位为key@shreytyagi请参阅我编辑的答案。谢谢@Ynjxsjmh