我有一个包含数据的数据框,我希望在时间内计算值的变化。
UserId DateTime Value
1 1 0
1 2 0
1 3 0
1 4 1
1 6 1
1 7 1
2 1 0
2 2 1
2 3 1
2 4 0
2 6 1
2 7 1
因此,在脚本执行之后,我想获得一个带有更改标识符的列(用户和日期)。只有从0变为1才有意思。
UserId DateTime Value IsChanged
1 1 0 0
1 2 0 0
1 3 0 0
1 4 1 1 <- Value was changed from 0 to 1
1 6 1 0
1 7 1 0
2 1 0 0
2 2 1 1 <- Value was changed from 0 to 1
2 3 1 0
2 4 0 0 <- Change from 1 to 0 not interesting
2 6 1 1 <- Value was changed from 0 to 1 for the user
2 7 1 0
答案 0 :(得分:1)
这个怎么样?
# df is your dataframe
df['IsChanged'] = (df['Value'].diff()==1).astype(int)
你关心的唯一情况是Value在0之前和之后1,所以你可以简单地计算值的变化并检查它是否等于1.
UserId DateTime Value IsChanged
0 1 1 0 0
1 1 2 0 0
2 1 3 0 0
3 1 4 1 1
4 1 6 1 0
5 1 7 1 0
6 2 1 0 0
7 2 2 1 1
8 2 3 1 0
9 2 4 0 0
10 2 6 1 1
11 2 7 1 0