Я поставил decimate в названии, но я не уверен, что именно это я и имею в виду. Вот полное описание проблемы. У меня есть датафрейм, который содержит данные из нескольких предметов. То, что я хочу сделать, - это проанализировать данные с интервалом X дней. Идея состоит в том, что я хочу рассматривать только те данные, которые были получены каждый, скажем, 4-й день от субъекта. Подвох в том, что данные были собраны параллельно для субъектов, поэтому я не могу просто проводить каждый 4-й день по предметам, а скорее делать децимацию / понижающую выборку / что угодно для каждого предмета. Два ключевых столбца в кадре данных - это «subject» и «session_timestamp». В последнем случае дата и время форматируются, как в этом примере: 2017-11-10 16:30:47. Есть ли хороший способ сделать это в Python?
Edit:
Первые комментаторы попросили более конкретный пример фрейма данных с некоторыми примерами данных. Вот игрушечный фрейм данных, который похож на тот, который у меня есть, и с ним легко работать. Приведенный ниже код создает фрейм данных с 4 столбцами: subjectID, date, Score1 и Score2. Обратите внимание, что субъект может иметь более одной записи на данную дату (в основном это нейронные записи, и каждая строка кадра данных представляет один нейрон, и мы можем записать более одного нейрона на субъект)
import pandas as pd
import numpy as np
ab = pd.DataFrame()
ab["subjectID"] = np.random.randint(5, size=200)#random list of "subjects" from 0 to 4
ab["date"] = np.random.randint(20, size=200)#random list of "dates" from 0 to 19
ab["score1"] = np.random.randint(200, size=200)#meant to simulate one measurement from one subject
ab["score2"] = np.random.randint(400, size=200)#meant to simulate a second measurement
Что я хочу сделать, это отфильтровать данные (оценка1 и оценка2), которые были собраны с интервалом не менее 4 дней для каждого субъекта. Код может быть чрезвычайно простым и занимать первый день, когда у субъекта есть запись, и каждый четвертый день после этого. Но лучшим решением было бы, если бы потребовался первый день, затем следующий, то есть более чем через 3 дня, а затем тот, что более чем через 3 дня после этого (не у каждого субъекта есть ежедневные пробы, поэтому жесткие «каждые 4-е» дневной кодекс не был бы таким элегантным). Все данные, собранные в разрешенные дни, должны быть включены. Например, должны быть включены все данные с кодом дня 0 (если это первый день субъекта).