2015-04-03 128 views
0

我要超越this問題以獲取有關日期時間數據框的更多信息。用這樣的數據框中工作:熊貓 - 應用日期時間函數

User_ID Datetime 
01 2014-01-01 08:00:00 
01 2014-02-02 09:00:00 
02 2014-01-02 10:00:00 
02 2014-01-03 11:00:00 
03 2014-01-04 12:00:00 
04 2014-01-04 13:00:00 
05 2014-01-02 14:00:00 
01 2014-04-01 08:00:00 
01 2014-03-02 09:00:00 
01 2014-05-01 08:00:00 
01 2014-06-02 09:00:00 
01 2014-07-01 08:00:00 
01 2014-08-02 09:00:00 
01 2014-09-01 08:00:00 
01 2014-10-02 09:00:00 
01 2014-11-01 08:00:00 
01 2014-12-02 09:00:00 

,用戶都關聯到一個特定的日期時間事件。用戶可以在一年中發生更多事件,例如每月12次,每天100次等,但是我想僅過濾一次發生/一年中每一個月的用戶。在上面的例子中,用戶01.

回答

1

這裏是另一種方式利用大熊貓魔術做到這一點:

df['Datetime'] = pd.to_datetime(df.Datetime) # You can skip this step if you already have it as Datatime object 
df1 = df.groupby(['User_ID', df.Datetime.dt.year]).apply(lambda x: x.Datetime.dt.month.nunique()) 
ids = df1[df1 >= 12].index.get_level_values('User_ID') 
df[df.User_ID.isin(ids)] 

其中產量:

User_ID   Datetime 
0   1 2014-01-01 08:00:00 
1   1 2014-02-02 09:00:00 
7   1 2014-04-01 08:00:00 
8   1 2014-03-02 09:00:00 
9   1 2014-05-01 08:00:00 
10  1 2014-06-02 09:00:00 
11  1 2014-07-01 08:00:00 
12  1 2014-08-02 09:00:00 
13  1 2014-09-01 08:00:00 
14  1 2014-10-02 09:00:00 
15  1 2014-11-01 08:00:00 
16  1 2014-12-02 09:00:00 
1

這是我的解決方案,假設你在一年內工作。

df是您的數據框

for user in df.User_ID.unique(): 

    months = [] 

    for d in df.Datetime[df.User_ID == user]: 
     months.append(d.month) 
    if(len(list(set(months))) == 12): 
     print('Im user ' + str(user))