python - 如何在 lambda 中运行嵌套循环,其中一个值来自字典,一个键有多个值?
问题描述
我想在 python 中使用 lambda 在数据框中创建一个新列,其中我必须在 dict 上运行一个循环,该循环具有多个键值,并将其与其他变量映射,如果 2 个值是 dict 中的每个值,则在该循环上运行被分配到一个键。
下面是我编写的代码,但无法映射每个 dict 值,而是整个值对
acc['metric'] = acc.apply(lambda 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
,返回一个列表,然后对 column进行explode()metric
。
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')
推荐阅读
- spring-boot - 在 java springboot 中覆盖 CORS 策略
- python - 使用 Python 和 Tkinter 显示国际字符
- java - 无法为 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象获取未知属性“nav_version”
- python - 'AnonymousUser' 对象没有属性 '_meta' | Django 身份验证
- c# - 有什么方法可以拦截 GraphQL Query 模式验证错误?
- python - 为什么在这里调用函数时需要 print()?
- java - Java 用逗号吐出字符串不起作用
- sql - PostgreSQL:加速一个大表与许多小表的多个连接
- html - 如何将 HTML 转换为 PL/SQL?
- angular - 可疑的 iconv-lite 依赖