我的数据框如下:
price time
0 1 2019-04-11 03:01:53.488000
1 0 2019-04-11 03:27:25.768000
2 1 2019-04-11 03:34:20.520000
3 0 2019-04-11 03:36:16.556000
我需要做的是,当列price
等于0时,取列time
中同一行的值,并将其与列{{1}中的值进行比较},当价格为1时。
在我的示例中,将类似于:
time
有什么想法如何基于两个不同的列进行迭代?我有点卡住了!谢谢
答案 0 :(得分:3)
您可以将df.price.eq(1).cumsum()
分组,因为您说模式始终为1-0-1-0
:
u = df.groupby(df.price.eq(1).cumsum())['time'].diff()
df.assign(time_diff=u)
price time time_diff
0 1 2019-04-11 03:01:53.488 NaT
1 0 2019-04-11 03:27:25.768 00:25:32.280000
2 1 2019-04-11 03:34:20.520 NaT
3 0 2019-04-11 03:36:16.556 00:01:56.036000