我有一个像这样的pandas数据框:
Ask Price Ask Yld
DateTime
2010-03-10 13:00:00 4.031992 0.152202
2010-03-10 13:01:00 4.032859 0.152091
2010-03-10 13:02:00 4.033910 0.151957
2010-03-10 13:03:00 4.034197 0.151920
2010-03-10 13:04:00 4.035106 0.151803
2010-03-11 13:00:00 4.033333 0.166666
并且有一个跨越多天的日期时间索引。
我想创建一个列,其中包含该行的第一个索引之后的分钟数,即创建如下所示的输出:
Ask Price Ask Yld Minutes after start
DateTime
2010-03-10 13:00:00 4.031992 0.152202 0
2010-03-10 13:01:00 4.032859 0.152091 1
2010-03-10 13:02:00 4.033910 0.151957 2
2010-03-10 13:03:00 4.034197 0.151920 3
2010-03-10 13:05:00 4.035106 0.151803 5
2010-03-11 13:00:00 4.033333 0.166666 1440
我知道我可以简单地使用一个日期时间减去另一个来查找timedelta - 但我不知道如何应用它来创建一个新列。
答案 0 :(得分:2)
您可以执行减法来获取TimeDeltaIndex,它具有.seconds
属性,您可以将其除以60得到分钟:
In [220]:
df['Minutes after start'] = (df.index - df.index[0]).seconds/60
df
Out[220]:
Ask Price Ask Yld Minutes after start
DateTime
2010-03-10 13:00:00 4.031992 0.152202 0
2010-03-10 13:01:00 4.032859 0.152091 1
2010-03-10 13:02:00 4.033910 0.151957 2
2010-03-10 13:03:00 4.034197 0.151920 3
2010-03-10 13:04:00 4.035106 0.151803 4
修改强>
您可以将timedeltaindex转换为timedelta64[s]
:
In [237]:
df['Minutes after start'] = (df.index - df.index[0]).astype('timedelta64[s]')/60
df
Out[237]:
Ask Price Ask Yld Minutes after start
DateTime
2010-03-10 13:00:00 4.031992 0.152202 0
2010-03-10 13:01:00 4.032859 0.152091 1
2010-03-10 13:02:00 4.033910 0.151957 2
2010-03-10 13:03:00 4.034197 0.151920 3
2010-03-10 13:04:00 4.035106 0.151803 4
这相当于总秒数