#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()]}))