我想跳过我在数据帧上运行的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循环迭代,那么我将能够获得所需的解决方案