Давай начнем с чтения данных из файла input.csv с помощью
pandas.read _csv(), затем вычислим сумму груза для каждого водителя, учитывая тип операции (привоз или вывоз), и сохраним результат в файл output.csv. Вот как можно это сделать:
import pandas as pd
# Чтение данных из файла input.csv
try:
data = pd.read_csv("input.csv")
except FileNotFoundError:
# Если файл не найден, создаем пустой DataFrame с нужными названиями столбцов
data = pd.DataFrame(columns=["ID", "Фамилия водителя", "Объем груза", "Тип операции"])
# Проверка, если DataFrame пустой, сохраняем только заголовки в output.csv и завершаем скрипт
if data.empty:
data.to_csv("output.csv", index=False, encoding="utf8")
exit()
# Вычисление суммарного груза за вычетом вывезенного груза для каждого водителя
data["Объем груза"] = data.apply(lambda row: row["Объем груза"] if row["Тип операции"] == "Привоз" else -row["Объем груза"], axis=1)
result = data.groupby("Фамилия водителя")["Объем груза"].sum().reset_index()
# Сортировка результата по убыванию суммы груза и по возрастанию фамилий
result = result.sort_values(by=["Объем груза", "Фамилия водителя"], ascending=[False, True])
# Сохранение результата в файл output.csv
result.to_csv("output.csv", index=False, encoding="utf8")
Этот скрипт сначала пытается прочитать данные из файла input.csv. Если файл не найден, он создает пустой DataFrame с нужными заголовками. Затем он проверяет, пуст ли DataFrame. Если DataFrame пустой, он просто сохраняет заголовки в файл output.csv. Если DataFrame содержит данные, скрипт вычисляет суммарный объем груза для каждого водителя, учитывая тип операции, затем сортирует результат и сохраняет его в файл output.csv.
ПРИМЕР 1
ВВОД
ID,Фамилия водителя,Объем груза,Тип операции
1,Уточкин,2726,Вывоз
2,Петров,3581,Привоз
3,Сидоров,3724,Привоз
4,Петров,2683,Привоз
5,Иванов,1637,Вывоз
6,Уточкин,3836,Вывоз
7,Ежкин,3055,Привоз
8,Иванов,3220,Привоз
9,Сидоров,2584,Вывоз
ВЫВОД
Фамилия водителя,Объем груза
Петров,6264
Ежкин,3055
Иванов,1583
Сидоров,1140
Уточкин,-6562
ПРИМЕР 2
ВВОД
ID,Фамилия водителя,Объем груза,Тип операции
ВЫВОД
Фамилия водителя,Объем груза
ПРИМЕЧАНИЕ