@Headballz

Как внести различающиеся данные в одну строку при частичном совпадении в столбцах?

Имеется dataframe, в котором могут повторятся первые два столбца.
Нужно произвести операцию, чтобы 2 строки, где повторяются значения, слились в одну, а в третий столбец записать различающиеся значения через запятую, например.
Есть:
Маршрут         ТС   Водитель
0   route_name   car     john
1   route_name   car    boris
2  route_name2  car2    boris


Нужно:
Маршрут         ТС    Водитель
0   route_name   car     john,boris
1  route_name2  car2    boris
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Сделать dict, где ключом будет tuple из первых двух столбцов, а значение - set из строк. Очень хорошо подойдет dict.get((route,car), set())

ЗЫ. ну как-то так
dataset = [
    ["route1","car1","alex"],
    ["route1","car1","boris"],
    ["route2","car1","alex"],
    ["route2","car1","boris"],
    ["route1","car1","john"],
    ["route3","car2","alex"],
    ["route1","car2","alex"],
    ["route1","car3","alex"],
    ["route1","car2","alex"],
    ["route1","car2","alex"],
    ["route3","car1","alex"],
]

outdataset = {}

for route,car,driver in dataset:
    key = (route,car)
    _d = outdataset.get(key,set())
    _d.add(driver)
    outdataset[key] = _d

for route,car in outdataset.keys():
    print(route,car,", ".join(outdataset[(route,car)]))


route1 car1 john, alex, boris
route2 car1 alex, boris
route3 car2 alex
route1 car2 alex
route1 car3 alex
route3 car1 alex
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы