Извлечение часа из столбца времени в пандах - PullRequest
0 голосов
/ 29 октября 2018

Предположим, у меня есть следующий набор данных:

enter image description here

Как бы я создал новый столбец, который будет часом времени?

Например, приведенный ниже код работает для отдельных времен, но я не смог обобщить его для столбца в пандах.

t = datetime.strptime('9:33:07','%H:%M:%S')
print(t.hour)

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Мое предложение:

df = pd.DataFrame({'TIME':['9:33:07','9:41:09']})
df['hour']= df.TIME.str.extract("(^\d+):", expand=False)
  • "str.extract (...)" - это векторизованная функция, которая извлекает шаблон регулярного выражения (в нашем случае "(^ \ d +):", который является часом ВРЕМЕНИ) и возвращает объект серии Pandas путем указав параметр "expand = False"
  • Результат сохраняется в столбце «час»
0 голосов
/ 29 октября 2018

Использовать to_datetime до даты с dt.hour:

df = pd.DataFrame({'TIME':['9:33:07','9:41:09']})

#should be slowier
#df['hour'] = pd.to_datetime(df['TIME']).dt.hour

df['hour'] = pd.to_datetime(df['TIME'], format='%H:%M:%S').dt.hour
print (df)
      TIME  hour
0  9:33:07     9
1  9:41:09     9

Если вы хотите работать с datetime s в столбце TIME, можно назначить обратно:

df['TIME'] = pd.to_datetime(df['TIME'], format='%H:%M:%S')

df['hour'] = df['TIME'].dt.hour
print (df)
                 TIME  hour
0 1900-01-01 09:33:07     9
1 1900-01-01 09:41:09     9
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...