计算Pandas中列的更改

时间:2016-11-16 17:30:44

标签: python pandas dataframe group-by

我有一个包含数据的数据框,我希望在时间内计算值的变化。

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

1 个答案:

答案 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