JuniorКодОчень частоЕщё не отвечали
Суммарные продажи на сотрудника объединением двух DataFrame
В df_names столбцы emp_id, emp_name; в df_sales — emp_id, date, num_sales. Постройте DataFrame с именем каждого сотрудника и его суммарным числом продаж за все даты.
import pandas as pd
def total_sales(df_names: pd.DataFrame, df_sales: pd.DataFrame) -> pd.DataFrame:
# ваш код здесь
Напишите реализацию.
Агрегируют продажи на сотрудника, затем подтягивают имя. Группируют продажи по emp_id и суммируют num_sales, затем объединяют с именами по emp_id: df_sales.groupby('emp_id')['num_sales'].sum().reset_index().merge(df_names, on='emp_id')[['emp_name','num_sales']].
- ✗Использовать concat вместо объединения по ключу
- ✗Возвращать строки по дате без суммирования num_sales
- ✗Считать строки имён вместо суммирования продаж
- →Важно ли, группировать до или после объединения?
- →Как появится сотрудник без продаж?
Sum each employee's sales, then merge in the name on the shared emp_id key.
import pandas as pd
def total_sales(df_names: pd.DataFrame, df_sales: pd.DataFrame) -> pd.DataFrame:
totals = (df_sales.groupby('emp_id')['num_sales']
.sum()
.reset_index())
return totals.merge(df_names, on='emp_id')[['emp_name', 'num_sales']]
Grouping first reduces each employee to one row before the join, so the merge is small. A plain inner merge drops employees with no sales rows; use a right/outer merge with fillna(0) if those should appear with a zero total.