【发布时间】:2018-01-08 03:25:44
【问题描述】:
我有一个日期和时间的数据框列:
0 2017-06-24 08:37:00
1 2017-06-24 08:40:00
2 2017-06-24 08:42:01
3 2017-06-24 08:44:01
4 2017-06-24 08:46:00
5 2017-06-24 08:48:00
6 2017-06-24 08:50:01
7 2017-06-24 08:52:01
8 2017-06-24 08:54:01
9 2017-06-24 08:56:00
10 2017-06-24 08:58:01
11 2017-06-24 09:00:01
12 2017-06-24 09:04:01
13 2017-06-24 09:06:01
Name: Datetime, dtype: datetime64[ns]
我想要两个时间戳的时间差如:
2017-06-24 08:40:00 - 2017-06-24 08:37:00 = 3.0
2017-06-24 08:42:01 - 2017-06-24 08:40:00 = 2.1
我试过这段代码:
for z in range(len(df)):
abc = (df["Datetime"].iat[z+1] - df["Datetime"].iat[z])
我得到的输出是这样的,但有一个错误:
0 days 00:03:00
0 days 00:02:01
0 days 00:02:00
0 days 00:01:59
0 days 00:02:00
0 days 00:02:01
0 days 00:02:00
0 days 00:02:00
0 days 00:01:59
0 days 00:02:01
IndexError: index 14 is out of bounds for axis 0 with size 14
预期输出:
3.0
2.1
2.0
1.59
任何帮助将不胜感激。
【问题讨论】:
-
我想你想要
range(len(df) - 1) -
但我希望差异为浮动。
-
你误会了。我相信您遇到了超出范围的错误,因为您使用其长度作为最大索引在
df上运行for循环。但是df的长度是 14,它的最大索引是 13。所以在for循环中,您需要调整范围,如上所示。 -
问题是你有两个问题:1)输出不是你想要的格式。 2)你得到一个超出范围的异常。对于问题 1,请参阅 Jezrael 的回答。对于问题 2,应用我给出的修复方法
-
明白。谢谢杰克。
标签: python pandas datetime dataframe timedelta