Pandas 在数据帧的多列中将MM:SS转换为秒

Pandas 在数据帧的多列中将MM:SS转换为秒,pandas,python-datetime,Pandas,Python Datetime,我有一个数据框,其中有多个列,包含以分钟和秒为单位格式化的数据(即9:17),我想将其转换为秒(即9:17变为557) 我曾尝试在Python3.x中使用DateTime库来转换为秒;然而,我不断地得到各种各样的错误 以下是我试图做到这一点的方式: player_production_data = pd.merge(player_basic_data, player_toi_data[['Year', 'Player', 'Tm', 'Avg Shift', 'EV TOI', 'EV CF R

我有一个数据框,其中有多个列,包含以分钟和秒为单位格式化的数据(即9:17),我想将其转换为秒(即9:17变为557)

我曾尝试在Python3.x中使用DateTime库来转换为秒;然而,我不断地得到各种各样的错误

以下是我试图做到这一点的方式:

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是数据帧,我尝试对其进行转换的列是ATOI、Avg Shift、PP TOI和SH TOI

此特定函数的错误为 ValueError:要组装映射,至少需要指定[year,month,day]:[day,month,year]缺失


谢谢你的帮助

转换为
timedelta
,然后调用
total_seconds
。多亏了
堆栈
/
取消堆栈
,您可以通过单个
to_timedelta
调用来完成此操作:

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

转换为
timedelta
,然后调用
total_seconds
。多亏了
堆栈
/
取消堆栈
,您可以通过单个
to_timedelta
调用来完成此操作:

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