Создайте столбцы zip () pandas для суммирования других столбцов с уникальным индексом

#python #pandas #group-by #zip #pandas-groupby

#python #pandas #группировка по #zip #pandas-groupby

Вопрос:

У меня есть фрейм данных с 3 столбцами:

  • Магазин
  • продукт
  • Цена

Для каждого магазина у нас есть несколько продуктов, но каждый продукт имеет уникальную цену. Следовательно, фрейм данных состоит из нескольких строк в одном хранилище, каждая строка соответствует продукту.

Я хотел бы выполнить некоторые преобразования в наборе данных, чтобы получить только одну строку для каждого магазина и составной столбец, в котором будет суммироваться информация о продуктах и ценах следующим образом:

[(product_1,price_1),(product_2,price_2), ...]

На данный момент я не смог этого сделать.

Что я сделал, так это то, что я сгруппировал store , агрегировал по продукту и применил .unique() функцию. Я получаю для каждого магазина список всех товаров, но не цены. Когда я пытаюсь добавить price к .agg() функции, за которой следует, .unique() она не работает, и я понятия не имею, как это сделать.

Я предполагаю, что в какой-то момент мне, возможно, придется применить некоторую архивацию: zip(product, price) но я не добираюсь до этого.

Любая помощь приветствуется, спасибо!

Ответ №1:

 df.groupby("store", as_index = False).apply(lambda x: pd.Series({'store': x["store"].iloc[0],
                                                                "result": [(val["product"], val["price"]) for idx, val in x.iterrows()]}))