Загрузка...

Pandas: Сделать сводную таблицу

  • Нормальная
  • Не решено

Дано

Дан датафрейм df, представленный в виде «длинной» (long) таблицы:

import pandas as pd df = { 'name': ['Nikita', 'Nikita', 'Max', 'Max', 'Elizaveta', 'Alexandra', ...], 'contact': ['phone', 'email', 'phone', 'github', 'email', 'phone', ...], 'value': ['88805553535', 'nikitos@mail.ru', '88008889999', 'pubg', 'lizusha@gmail.com', '81234567890', ...] } df = pd.DataFrame(df) # name contact value # 0 Nikita phone 88805553535 # 1 Nikita email nikitos@mail.ru # 2 Max phone 88008889999 # 3 Max github pubg # 4 Elizaveta email lizusha@gmail.com # 5 Alexandra phone 81234567890

Обратите внимание: Размер датафрейма может быть произвольным.

Задание

Необходимо написать функцию to_wide, которая принимает на вход словарь именно такой структуры, как df, и преобразует его к датафрейму «широкого» (wide) вида:

  • значения из столбца contact становятся заголовками новых столбцов
  • соответствующие значения берутся из столбца value
  • столбец name при этом должен стать новым индексом датафрейма.

Пример результата:

# contact email github phone # name # Alexandra NaN NaN 81234567890 # Elizaveta lizusha@gmail.com NaN NaN # Max NaN pubg 88008889999 # Nikita nikitos@mail.ru NaN 88805553535

Важно: Если какой-то пары name-contact не найдено, то вместо значений нужно выводить np.nan из модуля numpy.

22 / 164