将 pandas timedelta 转换为以秒为单位显示
Convert pandas timedelta to be displayed in seconds
我正在重新格式化数据框中的一些数据,我需要计算一个新的 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]
我需要以某种方式将此数据转换为以秒为单位显示。首先,我尝试将其转换为日期时间,但由于某种原因出现 dtype timedelta64[ns] cannot be converted to datetime64[ns]
.
错误
接下来我尝试手动重新转换它,同时指定我希望它以秒为单位:
foo['DURATION_NEW'] = pd.to_timedelta(foo['DURATION_NEW'], unit='sec')
那也没用。一切都和现在一样。
我怎样才能正确地做到这一点?
在 dt
访问器上使用 total_seconds()
方法:
foo['DURATION_NEW'].dt.total_seconds()
我正在重新格式化数据框中的一些数据,我需要计算一个新的 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]
我需要以某种方式将此数据转换为以秒为单位显示。首先,我尝试将其转换为日期时间,但由于某种原因出现 dtype timedelta64[ns] cannot be converted to datetime64[ns]
.
接下来我尝试手动重新转换它,同时指定我希望它以秒为单位:
foo['DURATION_NEW'] = pd.to_timedelta(foo['DURATION_NEW'], unit='sec')
那也没用。一切都和现在一样。
我怎样才能正确地做到这一点?
在 dt
访问器上使用 total_seconds()
方法:
foo['DURATION_NEW'].dt.total_seconds()