首页 > 解决方案 > 如何组合字典的不同键的每个值以在 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

标签: pythondataframedictionarygrid-search

解决方案


顺序会有所不同,但这是一项工作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())

推荐阅读