#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"])