Using pandas methods
Here is a pure pandas way of doing this without using any list/dict comprehensions for anyone looking for this -
d = {"key_1":[[1, 2], [3, 4]], "key_2":[[1, 2], [3, 4]]}
df = pd.DataFrame(d).T.stack().droplevel(-1).apply(pd.Series)
print(df)
0 1
key_1 1 2
key_1 3 4
key_2 1 2
key_2 3 4
Benchmarks -
%%timeit
pd.DataFrame(d).T.stack().droplevel(-1).apply(pd.Series)
100 loops, best of 5: 2.56 ms per loop
%%timeit
pd.DataFrame((k, *l) for k, v in d.items() for l in v).set_index(0)
1000 loops, best of 5: 719 µs per loop
%%timeit
cols = ['col1', 'col2']
pd.DataFrame({k: zip(*v) for k,v in d.items()}, index=cols).T.explode(cols)
100 loops, best of 5: 6.53 ms per loop