с некоторой помощью от itertools
import pandas as pd
from itertools import chain, zip_longest
idx = chain.from_iterable([zip_longest(k, v, fillvalue=k) for k,v in d.items()])
pd.MultiIndex.from_tuples(idx)
MultiIndex([('a', 1),
('a', 2),
('a', 3),
('b', 4),
('b', 5),
('c', 7),
('c', 8)],
)