Преобразовать MM: SS в секунды в нескольких столбцах DataFrame - PullRequest
1 голос
/ 17 апреля 2019

У меня есть DataFrame с несколькими столбцами, содержащими данные, отформатированные в минутах и ​​секундах (т. Е. 9:17), и я хочу преобразовать это в секунды (т. Е. 9:17 становится 557).

Я пытался использовать библиотеку DateTime в Python 3.x для преобразования в секунды; однако я продолжаю получать разные ошибки.

Вот как я пытаюсь это сделать:

player_production_data = pd.merge(player_basic_data, player_toi_data[['Year', 'Player', 'Tm', 'Avg Shift', 'EV TOI', 'EV CF Rel', 'EV GF/60', 'EV GA/60',
'PP TOI', 'PP CF Rel', 'PP GF/60', 'PP GA/60', 'SH TOI', 'SH CF Rel', 'SH GF/60', 'SH GA/60']], on = ['Year', 'Player', 'Tm']) 

# Convert TOI Data to seconds
player_production_data[['ATOI', 'Avg Shift', 'PP TOI', 'SH TOI']] = pd.to_datetime(player_production_data[['ATOI', 'Avg Shift', 'PP TOI', 'SH TOI']],format='%M:%S')

Где player_production_data - это DataFrame, а столбцы, которые я пытаюсь сделать для этого преобразования, - ATOI, Avg Shift, PP TOI и SH TOI

Ошибка для этой конкретной функции Ошибка ValueError: для сборки отображений необходимо указать как минимум [год, месяц, день]: [день, месяц, год] отсутствует

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 17 апреля 2019

Преобразовать в timedelta, затем позвонить total_seconds.Вы можете сделать это с помощью одного to_timedelta звонка благодаря stack / unstack:

cols = ['ATOI', 'Avg Shift', 'PP TOI', 'SH TOI']
df[cols] = (pd.to_timedelta(df[cols].stack() + ':00', errors='coerce')
              .dt.total_seconds()
              .unstack())
...