如何跳过数据帧中for循环的最后一次迭代

时间:2019-07-03 13:54:34

标签: python-3.x pandas

我想跳过我在数据帧上运行的for循环的最后迭代,因为它给出了错误的结果。这可能是一个非常琐碎的问题,由于我是python的新手,因此需要帮助。我的数据跨越了数百万行和数十万个id。

我有一个带有3列ID,事件,时间的dataframe(df)。我正在尝试计算另一列TimeDiff,它是特定id的事件之间的差异,也可以称为特定事件的生存时间。

ID|Event|Time|TimeDiff
1|x|hh|hh(y)-hh(x) 
1|y|hh|hh(z)-hh(y)
1|z|hh|Nan
2|x|hh|hh(y)-hh(x) 
2|y|hh|Nan

上面是期望的输出,但是我正在尝试的方法也为Nan提供了一个值,这基本上是与下一个事件和下一个id的时间差,理想情况下应为Nan。

for i in df.Id.unique():
    df['TimeDiff'] = (df['Time'].shift(-1) - df['Time']).astype('timedelta64[h]')

预期结果:

ID|Event|Time|TimeDiff
1|x|hh|hh(y)-hh(x) 
1|y|hh|hh(z)-hh(y)
1|z|hh|Nan
2|x|hh|hh(y)-hh(x) 
2|y|hh|Nan

实际结果:

ID|Event|Time|TimeDiff
1|x|hh|hh(y)-hh(x) 
1|y|hh|hh(z)-hh(y)
1|z|hh|hh(x)-hh(z)
2|x|hh|hh(y)-hh(x) 
2|y|hh|Nan

如果我可以跳过ID为1的最终for循环迭代,那么我将能够获得所需的解决方案

0 个答案:

没有答案