You can iterate over the MultiIndex
series:
>>> s = df.set_index(['ColX', 'ColY'])['Sum']>>> {k: v.reset_index(level=0, drop=True).to_dict() for k, v in s.groupby(level=0)}{'A': {'a': 3, 'b': 2, 'c': 1}, 'B': {'p': 5, 'q': 6, 'r': 7}}
You can iterate over the MultiIndex
series:
>>> s = df.set_index(['ColX', 'ColY'])['Sum']>>> {k: v.reset_index(level=0, drop=True).to_dict() for k, v in s.groupby(level=0)}{'A': {'a': 3, 'b': 2, 'c': 1}, 'B': {'p': 5, 'q': 6, 'r': 7}}