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
.