Объедините результат для фреймов данных с индексом DatetimeIndex - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть кадр данных панд со случайными значениями в каждую минуту.

import pandas as pd
import numpy as np

df = pd.DataFrame(data=np.random.randint(0,30,size=20), index=pd.date_range("20180101", periods=20, freq='T'))

df
                      0
2018-01-01 00:00:00  21
2018-01-01 00:01:00  21
2018-01-01 00:02:00  23
2018-01-01 00:03:00  18
2018-01-01 00:04:00   3
2018-01-01 00:05:00  11
2018-01-01 00:06:00   3
2018-01-01 00:07:00   4
2018-01-01 00:08:00   5
2018-01-01 00:09:00  25
2018-01-01 00:10:00  15
2018-01-01 00:11:00  11
2018-01-01 00:12:00  29
2018-01-01 00:13:00  22
2018-01-01 00:14:00   7
2018-01-01 00:15:00  13
2018-01-01 00:16:00  26
2018-01-01 00:17:00   7
2018-01-01 00:18:00  26
2018-01-01 00:19:00  15

Теперь я должен создать новый столбец в кадре данных df, который "отражает" среднее значение () окна 2 периодов на более высокой частоте (5 минут).

df2 = df.resample('5T').sum().rolling(2).mean()

df2
                        0
2018-01-01 00:00:00   NaN
2018-01-01 00:05:00  67.0
2018-01-01 00:10:00  66.0
2018-01-01 00:15:00  85.5

Здесь возникает проблема. Мне нужно как-то «сопоставить» значения кадра «более высокой частоты» с более низким. Я должен получить что-то вроде:

                      0     new_column
2018-01-01 00:00:00  21     NaN
2018-01-01 00:01:00  21     NaN
2018-01-01 00:02:00  23     NaN
2018-01-01 00:03:00  18     NaN
2018-01-01 00:04:00   3     NaN
2018-01-01 00:05:00  11     67.0
2018-01-01 00:06:00   3     67.0
2018-01-01 00:07:00   4     67.0
2018-01-01 00:08:00   5     67.0
2018-01-01 00:09:00  25     67.0
2018-01-01 00:10:00  15     66.0
2018-01-01 00:11:00  11     66.0
2018-01-01 00:12:00  29     66.0
2018-01-01 00:13:00  22     66.0
2018-01-01 00:14:00   7     66.0
2018-01-01 00:15:00  13     85.5
2018-01-01 00:16:00  26     85.5
2018-01-01 00:17:00   7     85.5
2018-01-01 00:18:00  26     85.5
2018-01-01 00:19:00  15     85.5

Я пользуюсь пандами 0.23.4

Ответы [ 2 ]

0 голосов
/ 09 сентября 2018

Вы можете pd.concat оба кадра данных и fillforward

df3=pd.concat([df,df2],axis=1).ffill()
0 голосов
/ 09 сентября 2018

Вы можете просто использовать:

df['new_column'] = df2[0].repeat(5).values

с 5, являющимся вашим фактором передискретизации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...