Формат даты и времени Python - строка в указанном формате - PullRequest
0 голосов
/ 05 октября 2018

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

Вот пример данных:

0              47 mins
1       1 hour 25 mins
2       1 hour 27 mins
3               6 mins

Является ли приведенный выше один из поддерживаемых форматов даты и времени в python, который можно преобразовать с помощью некоторой функции - to_datetime или strftime?или это нужно обработать / разобрать по-другому.

Ожидаемый формат:

00:47
01:25
01:27
00:06

Ответы [ 2 ]

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

Вы можете преобразовать некоторые ключевые слова в соответствующие вещи для передачи pandas.Timedelta

d = {'mins': 'minutes', 'secs': 'seconds', 'hour': 'hours'}
td = [
    pd.Timedelta(**dict(zip(s[1::2], map(float, s[::2]))))
    for s in [s.split() for s in s.replace(d, regex=True)]
]

pd.Series(td, s.index)

0   00:47:00
1   01:25:00
2   01:27:00
3   00:06:00
dtype: timedelta64[ns]
0 голосов
/ 05 октября 2018

У вас есть 2 возможных формата, поэтому вы можете попробовать их каждый:

s = pd.Series(['47 mins', '1 hour 25 mins', '1 hour 27 mins', '6 mins'])

dt1 = pd.to_datetime(s, format='%H hour %M mins', errors='coerce')
dt2 = pd.to_datetime(s, format='%M mins', errors='coerce')

res = dt1.fillna(dt2).dt.strftime('%H:%M')

print(res)

0    00:47
1    01:25
2    01:27
3    00:06
dtype: object
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...