在 DataFrame 的多列中将 MM:SS 转换为秒

Convert MM:SS To Seconds in Multiple Columns of DataFrame

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

我尝试使用 Python 3.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 是 DataFrame,我尝试对其进行此转换的列是 ATOI、Avg Shift、PP TOI 和 SH TOI

这个特定函数的错误是 ValueError:到 assemble 的映射至少需要指定 [year, month, day]: [day,month,year] 缺失

感谢您的帮助!

转换为 timedelta,然后调用 total_seconds。由于 stack/unstack:

,您可以通过单个 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())