«Как преобразовать Duration (например, 2h 50m, 8h 35m) столбца объекта в кадре данных в столбец даты и времени только с минутами?» - PullRequest
1 голос
/ 21 июня 2019

В моем фрейме данных есть столбец с именем Duration.

Продолжительность в столбце в формате 2h 50m, 8h 35m, 19h and so on.

Этот тип столбца 'object'.

Как преобразовать весь столбец в минуты: 2 часа, 50 метров = 170 метров, 8 часов 35 метров = 515 метров?

Я пытался использовать

df['Col_name'] = pd.to_datetime(df['Col_name'])

1 Ответ

3 голосов
/ 21 июня 2019

Используйте Series.str.extract для числовых значений, несколько часов по 60, суммируйте вместе по Series.add, преобразуйте в целые числа, строки и последнее добавление m:

h = df['Col_name'].str.extract('(\d+)h', expand=False).astype(float) * 60
m = df['Col_name'].str.extract('(\d+)m', expand=False).astype(float)

df['new'] = h.add(m, fill_value=0).astype(int).astype(str) + 'm'

Еще одно решение, спасибо @ anky_91:

df['new1'] = (pd.to_timedelta(df['Col_name']).dt.seconds // 60).astype(str) + 'm'
print (df)

  Col_name    new   new1
0   2h 50m   170m   170m
1   8h 35m   515m   515m
2      19h  1140m  1140m

Но если позже потребуется обработка этих данных функциями datetime, возможно преобразовать их в timedeltas:

df['timedelta'] = pd.to_timedelta(df['Col_name'])
print (df)
  Col_name    new   new1 timedelta
0   2h 50m   170m   170m  02:50:00
1   8h 35m   515m   515m  08:35:00
2      19h  1140m  1140m  19:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...