在多个时隙上拆分值数据帧

时间:2019-06-05 22:26:01

标签: pandas dataframe datetime

希望将15分钟间隔的值均匀分布在5分钟间隔内。但是无法使其正常工作。数据是:

v <- replicate(10, runif(10), simplify = FALSE)

for (i in seq_along(v)) {
  png(paste0("~/image", i, ".png"))
  plot(v[[1]], ylim = range(v))
  lapply(seq_len(i)[-1], function(j) lines(v[[j]]))
  dev.off()
}

所需的输出为:

         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

1 个答案:

答案 0 :(得分:2)

稍有不同的方法:

# 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