为了账号安全,请及时绑定邮箱和手机立即绑定

Pandas 系列日期时间到 timedeltas(秒)

Pandas 系列日期时间到 timedeltas(秒)

翻过高山走不出你 2022-07-19 16:34:00
我的 Pandas 数据框有一个排序的日期时间列:print(df.Time)返回0      2019-10-30 13:14:491      2019-10-30 13:15:252      2019-10-30 13:32:44               ...        997    2020-02-04 13:53:35998    2020-02-04 14:22:46999    2020-02-04 14:52:43Name: Time, Length: 1000, dtype: datetime64[ns]我正在尝试的非常简单的事情是派生一个时间增量数组。我试过了:df.Time[1:-1] - df.Time[0:-2]这导致:0         NaT1      0 days2      0 days        ...  996   0 days997   0 days998      NaTName: Time, Length: 999, dtype: timedelta64[ns]结果长度是正确的,但我对结果有点困惑。似乎这不是对数据帧的 2 个子集执行操作的方法。什么是正确的方法,是否有一种内置方法可以从排序的日期时间列生成时间增量?预期的输出类似于:0      35 seconds1      1879 seconds2      1720 seconds        ...  996    1805 seconds997    1854 seconds998    1791 seconds
查看完整描述

2 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

示例数据框



0   2019-10-26 13:14:49

1   2019-10-30 13:16:49

2   2019-10-30 13:23:49

3   2019-10-30 13:32:49

4   2019-10-30 13:34:49

5   2019-10-30 13:45:49

6   2019-10-30 13:56:49

Name: Time, Length: 7, dtype: datetime64[ns]


您可以简单地使用 pandas 内置的diff函数,该函数计算上一行同一列中 DataFrame 元素的差异。


df.Time.diff() 

以下命令将导致:



0               NaT

1   4 days 00:02:00

2   0 days 00:07:00

3   0 days 00:09:00

4   0 days 00:02:00

5   0 days 00:11:00

6   0 days 00:11:00

Name: Time, dtype: timedelta64[ns]


查看完整回答
反对 回复 2022-07-19
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

正如 sammywemmy 所说,您需要:


df1['delta'] = df1.Time - df1.Time.shift()

在虚拟数据帧上:


df1.head(15)

Out[50]: 

                  Time      delta

0  2019-10-30 13:15:55      NaT

1  2019-10-30 13:16:11 00:00:16

2  2019-10-30 13:16:27 00:00:16

3  2019-10-30 13:16:54 00:00:27

4  2019-10-30 13:17:22 00:00:28

5  2019-10-30 13:17:23 00:00:01

6  2019-10-30 13:17:29 00:00:06

7  2019-10-30 13:17:44 00:00:15

8  2019-10-30 13:17:46 00:00:02

9  2019-10-30 13:17:48 00:00:02

10 2019-10-30 13:18:47 00:00:59

11 2019-10-30 13:18:52 00:00:05

12 2019-10-30 13:18:53 00:00:01

13 2019-10-30 13:18:59 00:00:06

14 2019-10-30 13:19:07 00:00:08


查看完整回答
反对 回复 2022-07-19
  • 2 回答
  • 0 关注
  • 113 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号