проверить количество времени между различными строками данных (время) и дата и имя сотрудника - PullRequest
0 голосов
/ 02 октября 2019

У меня есть df с этой информацией ['Name', 'Department', 'Date', 'Time', 'Activity'], поэтому, например, выглядит так:

raw data

Акоста, Hirto 225 West 28th Street 18.09.2009 07:25:00 Punch In
Акоста, Hirto 225 West 28th Street 18.09.2009 11:57:00 PunchOut
Acosta, Hirto 225 West 28th Street 18.09.2009 12:28:00 Punch In

Adams, Juan 225 West 28th Street 9/16/2019 06:57:00 Punch In
Adams, Juan 225 West 28th Street 16.09.2009 12:00:00 Punch Out
Adams, Juan 225 West 28th Street 16.09.2009 12:28:00 Punch In
Adams, Juan 225 West28th Street 16/16/2019 15:30:00 Punch Out
Адамс, Хуан 225 West 28th Street 9/18/2019 07:04:00 Punch In
Адамс, Хуан 225 West 28th Street 9/18 /2019 11:57:00 Punch Out

Мне нужно рассчитать время между входом и выходом в один и тот же день для одного и того же сотрудника. мне удается просто очистить данные, как:

    self.raw_data['Time'] = pd.to_datetime(self.raw_data['Time'], format='%H:%M').dt.time
    sorted_db = self.raw_data.sort_values(['Name', 'Date'])
    sorted_db = sorted_db[['Name', 'Department', 'Date', 'Time', 'Activity']]

любые предложения будут оценены

1 Ответ

0 голосов
/ 11 ноября 2019

, поэтому я нашел ответ на мою проблему и хотел поделиться им.

сначала разделите "Punch in" и "Punch Out", если два столбца

    def process_info(self):

    # filter data and organized --------------------------------------------------------------
    self.raw_data['in'] = self.raw_data[self.raw_data['Activity'].str.contains('In')]['Time']
    self.raw_data['pre_out'] = self.raw_data[self.raw_data['Activity'].str.contains('Out')]['Time']

после того, как я отсортировал информационную базу по дате и времени

        sorted_data = self.raw_data.sort_values(['Date', 'Name'])

, после этого я использую функцию сдвига для перемещения на уровень вверх по столбцу 'out', параллельно с параметром in.

        sorted_data['out'] = sorted_data.shift(-1)['Time']

и, наконец, я вынимаю лишние столбцы, которые были созданы на первом шаге. но проверять, если это само по себе.

        filtered_data = sorted_data[sorted_data['pre_out'].isnull()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...