У меня есть этот фрейм данных.Мой фрейм данных содержит ID, время и значение и пробелы (час).Я делаю повторную выборку независимо от каждого идентификатора.Столбец Gaps содержит последовательные промежутки времени между двумя разными временами.Я делаю повторную выборку каждые 10 минут, и я хочу прекратить повторную выборку, если последовательные разрывы превышают 0,86 ч, вернуть следующие строки как исходные и продолжить повторную выборку снова, когда он обнаружит те же условия.мои условия гэпов подходят так:
a (abs(a-b))
b 0
Пример данных
ID,Time,Value,Gaps
1,1523147332607,2,0.3347541666666667
1,1523148537722,5,0.17346666666666666
1,1523149162202,6,1.6252830555555555
1,1523155013221,4,0.33290027777777775
1,1523156211662,7,0.3722580555555556
1,1523157551791,10,0.0
2,1523156211662,5,0.5115911111111111
2,1523158053390,2,0.3405525
2,1523159279379,9,1.3295477777777778
2,1523164065751,3,0.0
Как вы можете видеть, ID 1 имеет разрывы более 0,86 ч, поэтому моя идея - остановить повторную выборкув таком случае.Примерно так:
ID,Time,Value,Gaps
1,1523147332607,2,0.3347541666666667
...................................
1,1523148537722,5,0.17346666666666666
...................................
...................................
1,1523149162202,6,1.6252830555555555
Итак, я хочу продолжить повторную выборку до этого Time period 1523149162202
, а когда больше нет необходимости делать выборку, я хочу вернуть последние строки как оригинальные, т.е.
1,1523149162202,6,1.6252830555555555
И после этого я хочу продолжить повторную выборку из следующих строк
1,1523155013221,4,0.33290027777777775
1,1523156211662,7,0.3722580555555556
1,1523157551791,10,0.0
, и это продолжается
Для обычной повторной выборки для каждого идентификатора,
df = df.set_index(['Time'])
df.index = pd.to_datetime(df.index, unit='ms')
df = (df.groupby('ID', axis=0)['Value']
.resample('10min')
.mean()
.groupby(level=0)
.apply(lambda x: x.interpolate()).reset_index())
Но как мне отследить каждую повторную выборку, чтобы я мог остановить повторную выборку, когда она удовлетворяет некоторым условиям, и вернуть исходные строки на концах для этой части повторной выборки.И затем он продолжает из следующих строк снова те же критерии.Я думал использовать np.where
, но я не близко к этому.Какие-либо предложения ?