Разделение значения кадра данных по нескольким временным интервалам - PullRequest
0 голосов
/ 06 июня 2019

Хотелось бы равномерно распределить значения 15-минутных интервалов по 5-минутным интервалам. Но не могу заставить его работать. Данные:

         Datetime      a   
2018-01-01 00:00:00     6   
2018-01-01 00:15:00     3   
2018-01-01 00:30:00     9

Желаемый результат будет:

         Datetime         a  
 2018-01-01 00:00:00       2   
 2018-01-11 00:05:00       2  
 2018-01-11 00:10:00       2  
 2018-01-11 00:15:00       1  
 2018-01-11 00:20:00       1  
 2018-01-11 00:25:00       1  
 2018-01-11 00:30:00       3  
 2018-01-11 00:35:00       3  
 2018-01-11 00:40:00       3  

возможно излишне, но значение '6' 00:00:00 в данных распределено по интервалам 00:00:00-00:10:00

1 Ответ

2 голосов
/ 06 июня 2019

Немного другой подход:

# convert to datetime
df.Datetime = pd.to_datetime(df.Datetime)

# set Datetime as index
df.set_index('Datetime', inplace=True)

# add one extra row
df.loc[df.index.max()+pd.to_timedelta('10min')] = 0

# set_index and resample
s = df.asfreq('5T', fill_value=0)

# transform the 0's to mean:
(s.groupby(s['a'].ne(0)
  .cumsum())
  .transform('mean')
  .reset_index()
)

Вывод:

             Datetime  a
0 2018-01-01 00:00:00  2
1 2018-01-01 00:05:00  2
2 2018-01-01 00:10:00  2
3 2018-01-01 00:15:00  1
4 2018-01-01 00:20:00  1
5 2018-01-01 00:25:00  1
6 2018-01-01 00:30:00  3
7 2018-01-01 00:35:00  3
8 2018-01-01 00:40:00  3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...