Сопоставить и добавить несколько значений (для каждого ключа) из dict в разные столбцы кадра данных - PullRequest
0 голосов
/ 11 декабря 2018

Имея данные со значениями ключа, как мы можем отобразить его значения для заполнения различных столбцов в кадре данных.Попытались заполнить несколько столбцов данных, используя функцию apply , где функция содержит итерацию по диапазону списка значений без успеха.Любая помощь?

Иллюстрация:

{'k1':['v1', 'v2'], 'k2':['v3', 'v4', 'v5']}

Желаемый результат (фрейм данных):

    col1  col2  col3
k1  v1    v2
k2  v3    v4    v5

1 Ответ

0 голосов
/ 11 декабря 2018

Вот один из способов использования itertools.zip_longest и конструктора pd.DataFrame:

from itertools import zip_longest

d = {'k1':['v1', 'v2'], 'k2':['v3', 'v4', 'v5']}

enum = enumerate(zip_longest(*d.values(), fillvalue=np.nan), 1)

df = pd.DataFrame(dict(enum), index=d).add_prefix('col')

Альтернативная формулировка с использованием форматированных строковых литералов (Python 3.6+; PEP498 ):

df = pd.DataFrame({f'col{i}': tup for i, tup in enum}, index=d)

Результат:

print(df)

   col1 col2 col3
k1   v1   v2  NaN
k2   v3   v4   v5
...