Простой словарь:
d = {'a': set([1,2,3]), 'b': set([3, 4])}
(наборы могут быть превращены в списки, если это имеет значение)
Как преобразовать его в long / tidy DataFrame
, в котором каждый столбецявляется переменной, и каждое наблюдение является строкой, то есть:
letter value
0 a 1
1 a 2
2 a 3
3 b 3
4 b 4
Следующее работает, но немного громоздко:
id = 0
tidy_d = {}
for l, vs in d.items():
for v in vs:
tidy_d[id] = {'letter': l, 'value': v}
id += 1
pd.DataFrame.from_dict(tidy_d, orient = 'index')
Есть ли какая-нибудь магия pandas
, чтобы сделать это?Что-то вроде:
pd.DataFrame([d]).T.reset_index(level=0).unnest()
, где unnest
явно не существует и происходит от R.