我试图向数据帧中添加一列deltaT,其中deltaT是连续行之间的时间差(在时间序列中索引)
time value
2012-03-16 23:50:00 1
2012-03-16 23:56:00 2
2012-03-17 00:08:00 3
2012-03-17 00:10:00 4
2012-03-17 00:12:00 5
2012-03-17 00:20:00 6
2012-03-20 00:43:00 7
期望的结果如下所示(deltaT单位以分钟为单位):
time value deltaT
2012-03-16 23:50:00 1 0
2012-03-16 23:56:00 2 6
2012-03-17 00:08:00 3 12
2012-03-17 00:10:00 4 2
2012-03-17 00:12:00 5 2
2012-03-17 00:20:00 6 8
2012-03-20 00:43:00 7 23
还可以从
timedelta64[ns]
(纳秒-默认数据类型)到timedelta64[m]
(分钟)[Frequency conversion(aTyping相当于楼层划分)typecastdf.index.to_series().diff()
(ΔT数据类型:
float64
)如果要转换为
int
,请在转换前用0
填充na
值熊猫版>;0.24.0.,也可以转换为pandas nullable integer数据类型(Int64)
Timedelta数据类型支持大量的时间单位,以及可以强制转换为任何其他单位的通用单位
以下是日期单位:
以下是时间单位:
如果您希望差到小数,请使用
true division
,即除以np.timedelta64(1, 'm')e、 g.如果df如下所示
检查下面的asyping(
floor division
)和true division
之间的差异注意:这是使用numpy>;=1.7,适用于numpy<;1.7,请参见此处的转换:http://pandas.pydata.org/pandas-docs/dev/timeseries.html#time-deltas
原始帧,带有日期时间索引
这是你想要的时间差
在不考虑日差的情况下给出答案(你的最后一天是3/20,之前是3/17),实际上是很棘手的
我们可以使用^{} 创建一个索引和值都等于索引键的序列,然后计算连续行之间的差异,这将导致
timedelta64[ns]
dtype。在获得该值之后,通过.dt
属性,我们可以访问时间部分的seconds属性,最后将每个元素除以60,以在几分钟内将其输出(可以选择将第一个值填充为0)简化:
当我们执行
diff
时:秒到分钟的转换:
如果假设您想包括} 将给出经过的持续时间(以秒为单位),然后可以通过除法再次计算分钟
date
部分,因为它以前被排除在外(只考虑时间部分),那么^{相关问题 更多 >
编程相关推荐