Как преобразовать DataFrame в словарь?

Есть задача, решение которой привожу.

Исходная таблица.

test = pd.DataFrame({"par1": [1, 2, 3, 4, 5], "par2": [11, 12, 13, 14, 15],
                     "country": ["UA", "UA", "US", "US", "CHI"],
                     })
print(test)

   par1  par2 country
0     1    11      UA
1     2    12      UA
2     3    13      US
3     4    14      US
4     5    15     CHI

Ее необходимо преобразовать в словарь списков вида:

{'CHI': [{'country': 'CHI', 'par1': 5, 'par2': 15}],
 'UA': [{'country': 'UA', 'par1': 1, 'par2': 11},
        {'country': 'UA', 'par1': 2, 'par2': 12}],
 'US': [{'country': 'US', 'par1': 3, 'par2': 13},
        {'country': 'US', 'par1': 4, 'par2': 14}]}

Я решил так:

def dictionarizer(g):
    global param_dict
    param_dict.update({g.country.values[0]: g.to_dict(orient="records")})
    
param_dict = dict()
test.groupby("country").apply(dictionarizer)

Но мне не нравится это решение. Глобальные переменные, побочные эффекты функции...
Подскажете более "стильное решение"?
Еще лучше было бы

{'CHI': [{ 'par1': 5, 'par2': 15}],
 'UA': [{ 'par1': 1, 'par2': 11},
        { 'par1': 2, 'par2': 12}],
 'US': [{ 'par1': 3, 'par2': 13},
        { 'par1': 4, 'par2': 14}]}

Ответы (1 шт):

Автор решения: MaxU
res = (test
       .groupby("country")
       .apply(lambda x: x.drop(columns="country").to_dict("records"))
       .to_dict())

результат:

In [37]: res
Out[37]:
{'CHI': [{'par1': 5, 'par2': 15}],
 'UA': [{'par1': 1, 'par2': 11}, {'par1': 2, 'par2': 12}],
 'US': [{'par1': 3, 'par2': 13}, {'par1': 4, 'par2': 14}]}
→ Ссылка