Код Middle pivot, melt и сводные спрашивают часто обновлено

Сводная таблица день × город

Условие

Дан список продаж [day, city, amount] (пары день-город могут повторяться). Постройте сводную таблицу сумм. Верните словарь {"days": [...], "cities": [...], "values": [[...], ...]}: дни и города отсортированы по возрастанию, values[i][j] сумма для days[i] и cities[j], пустые ячейки 0, все числа целые.

Примеры

sales_matrix([["d1", "A", 10], ["d1", "A", 5], ["d2", "B", 7]]) // {"days":["d1","d2"],"cities":["A","B"],"values":[[15,0],[0,7]]}
sales_matrix([["d1", "A", 1]]) // {"days":["d1"],"cities":["A"],"values":[[1]]}
sales_matrix([["2", "X", 1], ["1", "Y", 2], ["1", "X", 3]]) // {"days":["1","2"],"cities":["X","Y"],"values":[[3,2],[1,0]]}

Как подойти

Подсказки: 2
  1. Пары повторяются: pivot не подойдёт.
  2. aggfunc="sum", fill_value=0.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.