我有一個帶有time_stamp和的數(shù)據(jù)user_id。數(shù)據(jù)按user_id和排序time_stamp。我想user_id在 7 天滾動間隔內(nèi)計算每個7 天滾動間隔內(nèi)的訪問次數(shù)。如果訪問次數(shù) > 3,則將該 user_id 的新列設(shè)置為 1,否則為 0。我的數(shù)據(jù)time_stamp,user_id,visited2014-04-22 03:53:30,1,12013-11-15 03:45:04,2,12013-11-29 03:45:04,2,12013-12-09 03:45:04,2,12013-12-25 03:45:04,2,12013-12-31 03:45:04,2,12014-01-08 03:45:04,2,12014-02-03 03:45:04,2,1 <- in a 7 day interval (till 2014-02-10)2014-02-08 03:45:04,2,1 <- there is 3 visits2014-02-09 03:45:04,2,1 <-預期產(chǎn)出user_id outcome1 02 1我試過的:我不知道最好的方法來做到這一點。我的第一個想法是為每個user_id.df['timediff'] = df.groupby(['user_id','time_stamp'])['time_stamp'].diff() / np.timedelta64(1, 'D')但是這個輸出給了所有的Nans。 2014-04-22 03:53:30 1 1 NaN1 2013-11-15 03:45:04 2 1 NaN2 2013-11-29 03:45:04 2 1 NaN3 2013-12-09 03:45:04 2 1 NaN4 2013-12-25 03:45:04 2 1 NaN請問我應(yīng)該如何更改算法?
1 回答

桃花長相依
TA貢獻1860條經(jīng)驗 獲得超8個贊
df.rolling如果每個 user_id 都有一個系列,我會使用7 天的偏移量。然后您可以檢查系列中是否有任何地方的滾動總和大于或等于3。要獲取每個用戶的系列,請使用set_index()和unstack:
(df.set_index(['time_stamp', 'user_id'])
.unstack()
.rolling('7D')
.sum()
.ge(3)
.any())
# user_id
#visited 1 False
# 2 True
添加回答
舉報
0/150
提交
取消