Создать столбец Datetime из целочисленного столбца - часы и минуты - PullRequest
0 голосов
/ 02 октября 2019

У меня есть фрейм данных с 4-значным столбцом int:

df['time'].head(10)
0    1844
1    2151
2    1341
3    2252
4    2252
5    1216
6    2334
7    2247
8    2237
9    1651
Name: DepTime, dtype: int64

Я подтвердил, что максимальное значение равно 2400, а минимальное равно 1. Я хотел бы преобразовать это в столбец даты и времени с часами и минутами. ,Как бы я это сделал?

Ответы [ 4 ]

2 голосов
/ 02 октября 2019

Если это 4 цифры, timedelta более подходит, чем datetime:

pd.to_timedelta(df['time']//100 * 60 + df['time'] % 100, unit='m')

Выход:

0   18:44:00
1   21:51:00
2   13:41:00
3   22:52:00
4   22:52:00
5   12:16:00
6   23:34:00
7   22:47:00
8   22:37:00
9   16:51:00
Name: time, dtype: timedelta64[ns]

Если у вас есть другой столбец date, выможет потребоваться объединить date и time для создания столбца datetime.

0 голосов
/ 02 октября 2019

Если вы хотите выводить в строковом формате HH:MM, вам просто нужно преобразовать столбец в строку и использовать str.slice_replace с : ( Примечание : Я изменил ваш образец, чтобы включитьрегистр трехзначного целого числа )

образец df:

     time
0    1844
1    2151
2    1341
3    2252
4    2252
5    216
6    2334
7    2247
8    2237
9    1651

s = df['time'].map('{0:04}'.format)
out = s.str.slice_replace(2,2,':')

Out[666]:
0    18:44
1    21:51
2    13:41
3    22:52
4    22:52
5    02:16
6    23:34
7    22:47
8    22:37
9    16:51
Name: time, dtype: object

Или разделенный и конкатенированный с :

s = df['time'].map('{0:04}'.format)
out = s.str[:2] + ':' + s.str[2:]

Out[665]:
0    18:44
1    21:51
2    13:41
3    22:52
4    22:52
5    02:16
6    23:34
7    22:47
8    22:37
9    16:51
Name: time, dtype: object
0 голосов
/ 02 октября 2019

Попробуй это!

df['conversion'] = (df['time'].apply(lambda x: pd.to_datetime(x, format = '%H%M')).dt.strftime('%H:%M'))
0 голосов
/ 02 октября 2019

IIUC

pd.to_datetime(df.time.astype(str),format='%H%M').dt.strftime('%H:%M')
Out[324]: 
0    21:51
1    13:41
2    22:52
3    22:52
4    12:16
5    23:34
6    22:47
7    22:37
8    16:51
Name: col2, dtype: object
...