Как мне создать новый столбец в фрейме данных python, используя эквивалент excel averageifs

#python #average

#python #среднее

Вопрос:

У меня есть фрейм данных python со следующими столбцами: Год Месяц Дата день недели Объем продаж Как мне создать новый столбец AvgbyDay, который является средним объемом продаж (в среднем по годам, месяцам и дням недели). Я могу сделать это с помощью groupby, но я хотел бы отобразить его в фрейме данных. Я ищу эквивалент Excel averageifs($E:$E,$A:$A,A[i],$B:$B,B[i],$D:$D,D[i])

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

1. Пожалуйста, предоставьте MRE с кодом, который вы пробовали, и образцом ваших данных, чтобы люди действительно могли вам помочь!

Ответ №1:

если вы хотите добавить столбец с groupby помощью, один из способов — использовать transform :

 df['AvgbyDay'] = df.groupby('DayofWeek')['SaleVolume'].transform('mean')
df['AvgbyDay'] = df.groupby(['Year','Month','Date','Day'])['SaleVolume'].transform('mean')
 

Если вы хотите создать отдельный столбец со средним объемом продаж за год, месяц, дату и день, вы можете использовать for loop и сделать:

 time_cols = ['Year','Month','Date','DayofWeek']
for col in df[time_cols]:
    df[col '_average_sales'] = df.groupby(col)['DayofWeek'].transform('mean')
 

Выберите то, что вам нужно!