将 pandas timedelta 转换为以秒为单位显示 [英] Convert pandas timedelta to be displayed in seconds

查看:74
本文介绍了将 pandas timedelta 转换为以秒为单位显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在重新格式化数据框中的一些数据,我需要计算一个新的 timedelta 列的值,我通过将系列上移一行时的开始日期减去事件的开始日期来计算:

I was working on re-formatting some data in a dataframe and I needed to calculate a value for a new timedelta column which I did by subtracting start date of event with the start date when series is shifted up one row:

data['DURATION_NEW'] = (data['START'] - data['START'].shift(-1))

这工作正常并创建了一个 timedelta 列,但那里的数据格式非常奇怪:

This work fine and creates a timedelta column, but the data there are in a very strange format:

foo['DURATION_NEW']
Out[80]: 
0      -1 days +23:53:30
1      -1 days +15:35:00
2      -1 days +23:50:00
3      -1 days +23:49:00
4      -1 days +23:53:30
      
1459   -1 days +23:47:00
1461   -1 days +23:51:00
1462   -1 days +22:08:01
1463   -1 days +23:39:30
1464                 NaT
Name: DURATION_NEW, Length: 1406, dtype: timedelta64[ns]

我需要以某种方式转换这些数据以在几秒钟内显示出来.首先,我尝试将其转换为日期时间,但由于某种原因,出现了 dtype timedelta64[ns] 无法转换为 datetime64[ns] 的错误.

I need to somehow convert this data to be displayed in seconds. First I tried to convert it to a datetime, but for some reason got an error that dtype timedelta64[ns] cannot be converted to datetime64[ns].

接下来我尝试手动重新转换它,同时指定我希望它以秒为单位:

Next I tried to manually re-convert it while specifying that I want it to be in seconds:

foo['DURATION_NEW'] = pd.to_timedelta(foo['DURATION_NEW'], unit='sec')

那也没有用.一切都保持原样.

That didn't work either. All stays exactly as it is now.

我该如何正确执行此操作?

How can I do this properly?

推荐答案

dt 访问器上使用 total_seconds() 方法:

Use the total_seconds() method on the dt accessor:

foo['DURATION_NEW'].dt.total_seconds()

这篇关于将 pandas timedelta 转换为以秒为单位显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆