Допустим, у меня есть следующий набор данных, превращенный в фрейм данных:
data = [
['Job 1', datetime.date(2019, 6, 9), 'Jim', 'Tom'],
['Job 1', datetime.date(2019, 6, 9), 'Bill', 'Tom'],
['Job 1', datetime.date(2019, 6, 9), 'Tom', 'Tom'],
['Job 1', datetime.date(2019, 6, 10), 'Bill', None],
['Job 2', datetime.date(2019,6,10), 'Tom', 'Tom']
]
df = pd.DataFrame(data, columns=['Job', 'Date', 'Employee', 'Manager'])
Это дает фрейм данных, который выглядит следующим образом:
Job Date Employee Manager
0 Job 1 2019-06-09 Jim Tom
1 Job 1 2019-06-09 Bill Tom
2 Job 1 2019-06-09 Tom Tom
3 Job 1 2019-06-10 Bill None
4 Job 2 2019-06-10 Tom Tom
То, что я пытаюсь сгенерировать, этосводка для каждого уникального комбинированного задания / даты с столбцом для менеджера и столбцом для строки с разделенными запятыми сотрудниками, не являющимися менеджерами.Можно предположить пару вещей:
- Все имена сотрудников уникальны (на самом деле я буду использовать уникальные идентификаторы сотрудников, а не имена), а менеджеры также являются «сотрудниками», поэтому никогда не будетслучай, когда сотрудник и менеджер имеют одно и то же имя / идентификатор, но являются разными лицами.
- У рабочей бригады может быть менеджер или нет (см. строку с идентификатором 3, например, без)
- Менеджер также всегда будет указан как сотрудник (см. Строку с идентификатором 2 или 4)
- В задании может быть менеджер без дополнительных сотрудников (см. Идентификатор строки 4)
Я бы хотел, чтобы итоговый фрейм данных выглядел следующим образом:
Job Date Manager Employees
0 Job 1 2019-06-09 Tom Jim, Bill
1 Job 1 2019-06-10 None Bill
2 Job 2 2019-06-10 Tom None
Это приводит к моим вопросам:
- Есть ли способ сделать ','.присоединиться, как агрегация в своде панд?
- Есть ли способ сделать эту агрегацию условной (исключая имя / идентификатор в столбце менеджера)
Я подозреваю 1) возможно,и 2) может быть более сложным.Если 2) - нет, я могу обойти это другими способами позже в моем коде.