我有一个如下 struct 的df,其中A是分类变量,t是秒数,X是期望的输出:
A | t | X |
---|---|---|
1 | 0.0 | 0 |
1 | 3.2 | 3.2 |
1 | 3.9 | 3.9 |
1 | 18.0 | 18 |
1 | 27.4 | 27.4 |
3 | 47.4 | 0 |
3 | 50.2 | 2.9 |
3 | 57.2 | 9.8 |
3 | 64.8 | 17.4 |
3 | 76.4 | 29.1 |
2 | 80.5 | 0 |
1 | 85.3 | 0 |
1 | 87.4 | 2.1 |
我希望X是自A列更改值以来的秒数.
我可以在一个大的for循环中做到这一点,但它太慢/计算成本太高.
我试图通过执行以下操作来获取更改后的行数,但并不完全正确,并且不确定如何从那里为更改建立索引:
g = df[A].transform(lambda x: x.diff().ne(0).cumsum())
df[X] = df[A].cumcount() + 1