Панды группируются по годам и месяцам в столбцы

#python #dataframe

#python #фрейм данных

Вопрос:

У меня есть данные в следующем формате

     LOCATION    SALESDATE   Saleprice
0   Store A 2018-04-15  524.4
1   Store B 2018-04-15  524.4
2   Store B 2018-04-15  524.4
3   Store C 2018-04-15  296.4
4   Store C 2018-04-15  296.4
  

И мне нужен фрейм данных следующего формата:

           04/2018 05/2018 06/2018
Store A   524.4  524.4    524.4
Store B   123.2  234.4    524.4
Store C   524.4  524.4    524.4 
  

Где каждая строка представляет собой магазин, а каждый столбец представляет общий объем продаж за соответствующий месяц / год.

Я пробовал:

 df.groupby([df.LOCATION, df.SALESDATE.dt.year.rename('year'), df.SALESDATE.dt.month.rename('month')]).sum()
  

Это почти то, что я хочу, но 2-й и 3-й индексы должны быть столбцами.

Ответ №1:

Вы пробовали использовать pd.pivot_table() ?

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

 df["month"] = df.SALESDATE.dt.month
df["year"] = df.SALESDATE.dt.year

new_df = pd.pivot_table(df, values="Saleprice", index="LOCATION", columns=["month", "year"])