У меня есть фрейм данных, как показано ниже
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
Я ожидаю, что мой вывод будет похожэто