Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将时间增量转换为以秒为单位显示_Python_Pandas_Timedelta - Fatal编程技术网

Python 将时间增量转换为以秒为单位显示

Python 将时间增量转换为以秒为单位显示,python,pandas,timedelta,Python,Pandas,Timedelta,我正在重新格式化数据帧中的一些数据,我需要为新的timedelta列计算一个值,当序列上移一行时,我用开始日期减去事件的开始日期: data['DURATION_NEW'] = (data['START'] - data['START'].shift(-1)) 这项工作很好,并创建了一个timedelta列,但其中的数据格式非常奇怪: foo['DURATION_NEW'] Out[80]: 0 -1 days +23:53:30 1 -1 days +15:35:00

我正在重新格式化数据帧中的一些数据,我需要为新的timedelta列计算一个值,当序列上移一行时,我用开始日期减去事件的开始日期:

data['DURATION_NEW'] = (data['START'] - data['START'].shift(-1))
这项工作很好,并创建了一个timedelta列,但其中的数据格式非常奇怪:

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]
我需要以某种方式将这些数据转换为以秒为单位显示。首先,我尝试将其转换为datetime,但由于某种原因,出现了一个错误,
dtype timedelta64[ns]无法转换为datetime64[ns]

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

foo['DURATION_NEW'] = pd.to_timedelta(foo['DURATION_NEW'], unit='sec')
那也没用。一切都和现在一模一样


如何正确执行此操作?

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

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

另一种方法是使用
np.timedelta64
,即
(df['START']-df['START'].shift(-1))/np.timedelta64(1,'s')
,这也允许您访问其他timedelta。给OP的说明