melt, pivot_table и explode: широкий и длинный форматы
Содержание курса
Теги товаров: explode и groupby после разворачивания списков
Что уже дано
Проверяющая система запускает вашу программу и подаёт данные через stdin. Никаких заранее созданных переменных нет — вы читаете всё сами.
Что нужно сделать
Напишите программу, которая работает с таблицей товаров, где у каждого товара есть список тегов и число единиц на складе.
- Читает из
stdinцелое числоn— количество строк таблицы. - Читает следующие
nстрок; каждая содержит несколько токенов через пробел:
- первый токен —
product(строка без пробелов); - второй токен —
product_count(целое число); - все последующие токены — теги товара (одно или несколько слов без пробелов внутри).
Пример строки: Стол 3 дерево мебель
- Строит
pd.DataFrameиз словаря списков с ключами'product','product_count'и'tags', где'tags'— список тегов для каждого товара. - Разворачивает столбец
'tags'через.explode('tags').reset_index(drop=True)и сохраняет вdf_ex. - Выводит строку:
explode shape=<shape>— например,explode shape=(5, 3). - Выводит строку:
tag columns=<список столбцов df_ex>— список столбцов в виде Python-списка. - Группирует
df_exпо столбцу'tags'сas_index=Falseи вычисляет агрегатproduct_count=('product_count', 'sum'). Сохраняет вgrouped. Сортируетgroupedпо'product_count'по убыванию, затем по'tags'по возрастанию (для стабильного порядка при одинаковых суммах). Сбрасывает индекс черезreset_index(drop=True). - Для каждой строки
groupedвыводит одну строку вида:<tag> <product_count>.
Ввод и вывод
Программа читает stdin и пишет в stdout.
Формат ввода
n product1 count1 tag1a tag1b ... ... productN countN tagNa ...
Формат вывода
explode shape=(<строк>, <столбцов>)
tag columns=['product', 'product_count', 'tags']
<tag1> <sum1>
...
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Проверяется тестами (1)
- Тест 1Ввод
3 Стол 3 дерево мебель Стул 2 пластик мебель Лампа 1 свет
Ожидаемый выводexplode shape=(5, 3) tag columns=['product', 'product_count', 'tags'] мебель 5 дерево 3 пластик 2 свет 1
Решение
Как проверяется решение
Сравнение вывода: Правила исходной проверяющей системы. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
