Как я могу объединить каждое значение разных ключей словаря для получения кадра данных в 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.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
103
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Порядок будет немного другим, но это работа для 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())

Другие вопросы по теме