Преобразование данных в словаре в фрейм данных с индексом в строках - PullRequest
0 голосов
/ 12 июня 2019

У меня следующая проблема.С учетом словаря dict = { 'value_1': [12,25,30,45,60] , 'value_2': [ 15,21,31]} Что является более простым способом преобразования вышеуказанного словаря в фрейм данных, в котором один столбец представляет собой объединение элементов двух ключей, а другой столбец - индекс для каждого из этих элементов?Ниже следует вывод index 0 1 0 value_11 12 1 value_12 25 2 value_13 30 3 value_14 45 4 value_15 60 0 value_21 15 1 value_22 21 2 value_23 31

Подход, который я выбрал, был довольно трудоемким.Я сначала взял предметы и составил список этого.Для индексов, которые я запустил цикл for для i, индексирование будет 'value_1'+str(i), а затем объединит все в массив данных.Есть ли более простой способ сделать это?

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Возможно, не самый быстрый, но вы можете попробовать:

pd.concat(pd.DataFrame([[f'{k}{i+1}', val] for i,val in enumerate(v)]) 
          for k,v in d.items() )

выход:

          0   1
0  value_11  12
1  value_12  25
2  value_13  30
3  value_14  45
4  value_15  60
0  value_21  15
1  value_22  21
2  value_23  31
1 голос
/ 12 июня 2019

IIUC мы используем Series распакуем ваш dict, затем добавим новые столбцы используя cumcount

s=pd.Series(d).apply(pd.Series).stack().reset_index(level=0)
s['level_0']=s['level_0']+s.groupby('level_0').cumcount().add(1).astype(str)
s
    level_0     0
0  value_11  12.0
1  value_12  25.0
2  value_13  30.0
3  value_14  45.0
4  value_15  60.0
0  value_21  15.0
1  value_22  21.0
2  value_23  31.0
...