2016-11-16 5 views
0

У меня есть dataframe с данными, и я хочу рассчитать изменения значений в течение времени.Вычисление изменений в столбцах в Pandas

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

Что относительно этого?

# 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