Как заполнить пустой список значениями AM / PM на основе переменной «datetime64» из фрейма данных? - PullRequest
0 голосов
/ 31 марта 2020

Я новичок в ML и Data Science и изучаю столько, сколько могу сам, ища должности в Data Science / Business Analytics.

Я работаю над своим личным проектом по созданию алгоритмов ML для предсказать, покажет ли клиент свое назначение.

Я столкнулся с проблемой при работе со столбцом формата datetime64. Этот столбец называется «ScheduledDay», и его можно увидеть на изображении ниже. enter image description here

Моя конечная цель - создать новый столбец, который будет содержать значения «AM» или «PM» в зависимости от того, является ли время в столбце «ScheduledDay» временем AM ( <12:00 pm) или PM (<= 12:00 pm). </p>

Я начал работать над этим, создав пустой словарь для хранения значений «AM» и «PM». Затем я пытаюсь запустить a для l oop, чтобы заполнить мой пустой словарь значениями AM или PM, как показано в приведенном ниже коде.

# Create dictionary to hold results
appointment_counts = {'AM': 0, 'PM': 0}

# Loop over all trips
for hour in my_df['ScheduledDay']:

    if hour['ScheduledDay'].hour < 12:
        appointment_counts['AM'] += 1

    else:
        appointment_counts['PM'] += 1

print(appointment_counts)

Это дало мне следующую ошибку:

TypeError: 'Timestamp' object is not subscriptable

Чтобы решить эту проблему, я создал новый столбец - «ScheduledDaySTR» - чтобы иметь те же значения, что и «ScheduledDay», но с типом «объект» для эксперимента:

my_df['ScheduledDaySTR'] = my_df['ScheduledDay'].astype(str)

Затем я попробовал мой для l oop и пустой список снова:

# Create dictionary to hold results
appointment_counts = {'AM': 0, 'PM': 0}

# Loop over all trips
for hour in my_df['ScheduledDaySTR']:
    if hour['ScheduledDaySTR'].hour < 12:
        appointment_counts['AM'] += 1

    else:
        appointment_counts['PM'] += 1

print(appointment_counts)

Это вызвало у меня новую ошибку:

TypeError: string indices must be integers

Я попытался решить эту ошибку, создав новый столбец с такими же значениями как 'ScheduledDay', но типа 'int':

my_df['ScheduledDayINT'] = my_df['ScheduledDay'].astype(int)

Затем я снова попытался использовать для l oop:

# Create dictionary to hold results
appointment_counts = {'AM': 0, 'PM': 0}

# Loop over all trips
for hour in my_df['ScheduledDayINT']:
    if hour['ScheduledDayINT'].hour < 12:
        appointment_counts['AM'] += 1

    else:
        appointment_counts['PM'] += 1

print(appointment_counts)

И я получаю еще одну ошибку:

TypeError: 'int' object is not subscriptable

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

...