Pandas groupby - conjunto de valores diferentes
Tengo este marco de datos
x = pd.DataFrame.from_dict({'cat1':['A', 'A', 'A', 'B', 'B', 'C', 'C', 'C'], 'cat2':['X', 'X', 'Y', 'Y', 'Y', 'Y', 'Z', 'Z']})
cat1 cat2
0 A X
1 A X
2 A Y
3 B Y
4 B Y
5 C Y
6 C Z
7 C Z
Quiero agrupar porcat1
y luego agregarcat2
como conjuntos de valores diferentes, como
cat1 cat2
0 A (X, Y)
1 B (Y,)
2 C (Y, Z)
Esto es parte de un marco de datos más grande con más columnas, cada una de las cuales tiene su propia función de agregación, entonces, ¿cómo paso esta funcionalidad al diccionario de agregación?