【发布时间】:2020-03-05 16:55:58
【问题描述】:
我有一个如下所示的数据框
df = pd.DataFrame({
'subject_id':[1,1,1,1,1,1,1,2,2,2,2,2],
'time_1' :['2173-04-03 12:35:00','2173-04-03 12:50:00','2173-04-05 12:59:00','2173-05-04 13:14:00','2173-05-05 13:37:00','2173-07-03 13:39:00','2173-07-04 11:30:00','2173-04-04 16:00:00','2173-04-09 22:00:00','2173-04-11 04:00:00','2173- 04-13 04:30:00','2173-04-14 08:00:00'],
'val' :[5,5,5,5,1,6,5,5,8,3,4,6]})
df['time_1'] = pd.to_datetime(df['time_1'])
df['day'] = df['time_1'].dt.day
df['month'] = df['time_1'].dt.month
我想做的是删除不超过4 or more独特天数的记录/主题
如果您看到我的示例数据框,您会看到 subject_id = 1 只有 3 个唯一日期,即 3,4 and 5,所以我想完全删除 subject_id = 1。但是,如果您看到 subject_id = 2,他有超过 4 个独特的日期,例如 4,9,11,13,14。请注意,日期值具有时间戳,因此我从每个日期时间字段中提取日期并检查唯一记录。
这是我尝试过的
df.groupby(['subject_id','day']).transform('size')>4 # doesn't work
df[df.groupby(['subject_id','day'])['subject_id'].transform('size')>=4] # doesn't produce expected output
我希望我的输出是这样的
【问题讨论】:
标签: python python-3.x pandas dataframe pandas-groupby