Как выполнить условную группировку в кадре данных панд? - PullRequest
2 голосов
/ 20 сентября 2019

У меня есть набор данных об обслуживании / вождении для набора инвентаря грузового автомобиля. Я должен определить ключевые проблемы, связанные с техническим обслуживанием, и сгруппировать их по логике, предоставленной клиентом, следующим образом:

  1. если между основными произведениями было менее 3 поездок, и
  2. если ключевое слово перекрывается (возможно более 1 ключевого слова), сгруппируйте их вместе.

Вот пример с желаемым результатом (столбец группы), основанный на ключевых словах, идентификаторе грузовика, вход / выход:

    data =     {'Truck':['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B', 'B'], 
    'Date':['1/1/2019', '1/2/2019', '1/2/2019', '1/2/2019', '1/5/2019', '1/6/2019', '1/7/2019', '1/8/2019', '1/9/2019', '1/10/2019', '1/11/2019', '1/12/2019', '1/12/2019', '1/18/2019', '1/19/2019', '1/20/2019', '1/21/2019'],
     'Description': ['need oil change', 'flat tire pump', 'filter replaced', 'oil filled', 'truck on the road', 'flat tire replace', 'nail in tire', 'fix tire', 'truck on the road', 'truck on the road', 'tire replace', 'oil leak', 'replaced ring due to leak', 'truck on the road', 'truck on the road', 'truck on the road', 'replace filter due to leak'
],
 'Key_Words': ['oil', 'tire', 'filter, replace', 'oil', '', 'tire', 'tire', 'tire', '', '', 'tire', 'oil, leak', 'leak, replace', '', '', '', 'filter,replace,leak'], 
'Type_of_Work': ['main', 'main', 'assist', 'assist', '', 'main', 'assist', 'assist', '', '', 'main', 'main', 'assist', '', '', '', 'main'], 
'In_Out':['in', 'in', 'in', 'in', 'trip', 'in', 'in', 'in', 'trip', 'trip', 'in', 'in', 'in', 'trip', 'trip', 'trip', 'in'],
'Group':['1', '2', '3', '1', '', '2', '2', '2', '', '', '4', '5', '5', '', '', '', '6']}
df = pd.DataFrame(data)

Я попытался распределить «основную» работу и сгруппировать помощь, нокажется, что иногда ассис не связан с основной работой, а иногда он относится к более ранней работе.У меня нет рабочего кода для отслеживания рабочих отношений.Только ключевые слова помогут.Я знаю, как рассчитать счетчик поездок между двумя заданными основными работами, но я не уверен, как сохранить промежуточный итог.Пока число отключений из последнего обслуживания меньше трех и проблема сохраняется, мне нужно рассматривать это как ту же проблему и текущее обслуживание.

...