python - 如何组合字典的不同键的每个值以在 Python 中生成数据框?
问题描述
我想从字典中创建一个参数网格,每个键都是一个参数名称,它们包含一个值列表。我想结合它们之间的所有值。
params = {'k1': [1, 2, 3], 'k2': [10, 20, 30]}
在 R 中,我可以使用扩展列表来创建它expand.grid
。它创建了一个data.frame:
> params <- list("k1" = c(1, 2, 3), "k2" = c(10, 20, 30))
> params
# $k1
# [1] 1 2 3
#
# $k2
# [1] 10 20 30
> expand.grid(params)
# k1 k2
# 1 1 10
# 2 2 10
# 3 3 10
# 4 1 20
# 5 2 20
# 6 3 20
# 7 1 30
# 8 2 30
# 9 3 30
有没有办法在 Python 中以直接的方式做到这一点?
观察。我需要解决这个问题data.frame
。我不会用GridSearchCV
。
解决方案
顺序会有所不同,但这是一项工作itertools.product
:
from itertools import product
pd.DataFrame(product(*params.values()), columns=params.keys())
k1 k2
0 1 10
1 1 20
2 1 30
3 2 10
4 2 20
5 2 30
6 3 10
7 3 20
8 3 30
在旧版本的 pandas 上,您可能需要先列出产品:
df = pd.DataFrame(list(product(*params.values())), columns=params.keys())
推荐阅读
- amazon-web-services - 如何将 aws 代理主机设置为 Spark 配置
- rust - 在 while 循环中更新可变 HashMap
- java - 您如何读取下载到浏览器中的 CSV 文件的内容?
- bash - 在(查找命令)时排除某个目录 - BASH
- java - 运行 JUnit/Mockito 测试时出现 org.springframework.http.converter.HttpMessageNotReadableException
- python - Angular 6 的全栈 Web 应用程序仅在 Chrome 中运行
- php - phpmailer和sendmail
- generics - 如何管理激增的、深度嵌套的类型参数?
- amazon-web-services - 使用带有 Amplify 的现有 AppSync API
- c# - CosmosDB BulkExecutor 不能用于更新?