Вы можете использовать numpy.concatenate
и numpy.repeat
:
import numpy as np
d = {'a': [1, 2, 3], 'b': [4, 5]}
values = np.concatenate(list(d.values()))
lens = list(map(len, d.values()))
res = pd.DataFrame({0: np.repeat(list(d), lens),
1: values})
Результат
0 1
0 a 1
1 a 2
2 a 3
3 b 4
4 b 5
Это кажется сложнее, чем должно быть, но помните, что вам нужно создавать массивы для каждой серии / столбца. По сути, нам нужно повторить ключи словаря для серии 0
и объединить значения словаря для серии 1
.