Суммируйте данные на основе нескольких факторов в фрейме данных

#python #pandas #dataframe

Вопрос:

Как вы можете видеть, у меня есть фрейм данных разных магазинов с несколькими отделами (1-99, но разные). Я действительно хочу подвести итоги доходов всех отделов по каждому магазину за каждую неделю. Есть ли более элегантный способ, чем использование для циклов и операторов if? Я использую python с пандами.

Вот фотография стола :

введите описание изображения здесь

 merged = walmart.merge(stores, how='left').merge(features, how='left')
testing_merged = testing.merge(stores, how='left').merge(features, how='left')
df = pd.DataFrame(data={"Store": merged.Store, "Dept": merged.Dept, "Date": merged.Date, "Weekly_Sales": merged.Weekly_Sales, "IsHoliday": merged.IsHoliday,
                    "Type": merged.Type, "Size": merged.Size, "Temperatur": merged.Temperature, "Fuel_Price": merged.Fuel_Price,
                    "MarkDown1": merged.MarkDown1, "MarkDown2": merged.MarkDown2, "MarkDown3": merged.MarkDown3, "MarkDown4": merged.MarkDown4,
                    "MarkDown5": merged.MarkDown5, "CPI": merged.CPI, "Unemployment": merged.Unemployment})
 

Комментарии:

1. Вам не нужны операторы loops /if. Просто используйте pandas.DataFrame.groupby

2. вам нужны groupby() и sum. пожалуйста, опубликуйте какой-нибудь код. возможно, в начале вашего фрейма данных, чтобы мы могли опробовать наше решение на некоторых входных переменных и ожидаемом результате

Ответ №1:

Использование функции группирования по, такой как следующее

 df.groupby(['departments', 'shop','week'])
 

Документация : https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.groupby.html