#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