首页 > 解决方案 > 字符串到数据框列 HH:MM:SS.f 中的 total_seconds

问题描述

在 Python 3.7 中,我想将名为 'TIME' 的列中的字符串数据更改为total_seconds(). 但是使用ax1.dt.total_seconds()我收到 ValueError: expected hh:mm:ss format

这是当前数据框 ax1 中的列:-

时间栏

我试过以下代码: -

ax1['TIME'] = pd.to_timedelta(ax1['TIME'])
ax1.dt.total_seconds()
ax1.map('{:,.2f}'.format)

非常感谢任何帮助!

标签: python-3.x

解决方案


解决了我自己的问题。

我添加了

ax1['TIME'] = '00:' + ax1['TIME'].astype(str)

从现有的 MM:SS.f 格式获取 HH:MM:SS.f。

然后我跑了: -

ax1['TIME']=pd.to_timedelta(ax1['TIME'], unit= 'ms') 
ax1['TIME_delta_secs']=ax1['TIME'].dt.total_seconds()

unit是我最初的问题中缺少的关键部分。

因为时间不是从零开始的。

#Finds 0
if any(dfs[i]['TIME_delta_secs'] == 0):
    Zero_time = dfs[i][dfs[i]['TIME_delta_secs'] == 0].index.values[0]
    dfs[i].loc[dfs[i].index[Zero_time:],"Time_delta_secs"] = dfs[i]['TIME_delta_secs'] + 3600
else:
    pass

    
# Time difference

dfs[i]["time_diff"] = (dfs[i]['TIME_delta_secs']-dfs[i]['TIME_delta_secs'].shift(1))
dfs[i]['time_diff'] = dfs[i]['time_diff'].fillna(0)

# Total running Time 

dfs[i]['Time_total'] = dfs[i]['time_diff'].cumsum()

cumsum()是获得总运行时间的关键部分。

希望这对其他人有帮助。谢谢


推荐阅读