2016-11-16 113 views
0

我有一個包含數據的數據框,我希望計算出時間內數值的變化。計算大熊貓中列的變化

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) 

你關心的是價值後爲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 
的唯一情況