1
我用类似下面的数据帧的工作:大熊猫 - 如何筛选“最频繁的” datetime对象
User_ID Datetime
01 2014-01-01 08:00:00
01 2014-01-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
我想基础上,datetime列来筛选在一定条件下的用户,例如只在夏季过滤仅出现一次/月的用户,或仅出现用户等
到目前为止,我组与DF:
g = df.groupby(['User_ID','Datetime']).size()
在每个用户的时间获得的“痕迹” :
User_ID Datetime
01 2014-01-01 08:00:00
2014-01-02 09:00:00
02 2014-01-02 10:00:00
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
然后我涂敷的掩模来过滤,例如,与一个以上的迹线的用户:
mask = df.groupby('User_ID')['Datetime'].apply(lambda g: len(g)>1)
df = df[df['User_ID'].isin(mask[mask].index)]
所以这很好。我正在寻找一个功能,而不是lambda g: len(g)>1
能够在不同条件下过滤用户,正如我之前所说的。特别是过滤每月发生一次的用户。
谢谢埃德!如果我想仅在几个月内过滤用户,该怎么办?我可以申请一些dt.month ==六月条件? – 2015-03-31 11:01:23
我只是首先过滤df,而不是在groupby上做这个,如果这就是你想要的,我的意思是'df [df ['Datetime']。dt.month == 5]'会做同样的事情 – EdChum 2015-03-31 11:05:21