Мне нужно отрезать несколько интервалов из одного кадра данных с индексом Freq: 120T. Дата начала каждого из требуемых интервалов задается вторым фреймом данных, индексированным с помощью Freq: None. Идея состоит в том, что мне нужно взять каждую из этих дат начала и включить время и количество периодов для каждого интервала. Атрибут времени и периоды одинаковы для всех интервалов.Продвинутая нарезка интервалов в Pandas Dataframe
Давайте посмотрим на этом бардаке с примером
Скажет наше время начала '18: 00: 00' и наши # периодов равен 3. dataframe быть раздробленным является df1 и dataframe, который содержит начало даты - df2.
df1
A B
DateTime
2005-09-06 16:00:00 1 5
2005-09-06 18:00:00 2 6
2005-09-06 20:00:00 3 7
2005-09-06 22:00:00 4 8
2005-12-07 16:00:00 9 8
2005-12-07 18:00:00 7 6
2005-12-07 20:00:00 5 4
2005-12-07 22:00:00 3 2
<class 'pandas.tseries.index.DatetimeIndex'>
[2005-09-06 16:00:00, ..., 2005-12-07 22:00:00]
Length: 8, Freq: 120T, Timezone: None
df2
Num
DateTime
2005-09-07 1
2005-12-07 2
<class 'pandas.tseries.index.DatetimeIndex'>
[2005-09-07, 2005-12-07]
Length: 2, Freq: None, Timezone: None
Желаемая Выход:
df3 = func(source=df1['B'], start_dates=df2.index, time_start='18:00:00', periods=3)
1 2
18:00:00 6 6
20:00:00 7 4
22:00:00 8 2
Что я сделал и соображения:
Одна из трудностей состоит в том, что данные в df1 находится на частоте 120T, но это только рабочие дни. Принимая это во внимание, я хотел бы сделать что-то вроде этого:
start = df2.index[0] ## And somehow add to this formula the fact that we want to start at
'18:00'
df3 = df1['B'][(df1.index > start) & (df1.index < start + 3)] ## Somehow iterate this over the
dates in the df2 index
Я ценю любой проницательности
Заранее спасибо
Вы можете привести небольшой пример, чтобы проиллюстрировать это, пример с 39433 вводами кажется немного экстремальным (я не следую тому, что вы пытаетесь сделать)! –
@ Энди Хайден Вы можете игнорировать это число. Упрощенным примером может быть, если df1 содержит 8 строк примера. Я пытаюсь извлечь фрагменты df1, учитывая отметку времени начала df2. Дайте мне знать, если это более ясно. Спасибо – hernanavella
спасибо, это намного проще. Я до сих пор не вижу, как вы получаете df3 из df1 и df2, но, возможно, для меня уже слишком поздно! –