假设我们有这个数据框:
date value
2018-01-10 9:30:00 0
2018-02-11 10:00:00 1
我想将每一行扩大到该时间前后的2小时范围内,并每30分钟进行一次重新采样,并且应该为新生成的行复制该值。
这是我想要的结果:
date value
2018-01-10 7:30:00 0
2018-01-10 8:00:00 0
2018-01-10 8:30:00 0
2018-01-10 9:00:00 0
2018-01-10 9:30:00 0
2018-01-10 10:00:00 0
2018-01-10 10:30:00 0
2018-01-10 11:00:00 0
2018-01-10 11:30:00 0
2018-02-11 8:00:00 1
2018-02-11 8:30:00 1
2018-02-11 9:00:00 1
2018-02-11 9:30:00 1
2018-02-11 10:00:00 1
2018-02-11 10:30:00 1
2018-02-11 11:00:00 1
2018-02-11 11:30:00 1
2018-02-11 12:00:00 1
答案 0 :(得分:2)
一个非常有趣的问题,请参见下面的代码(这是错误的)
(pd.concat([df, df.rename(lambda x:x+pd.DateOffset(hours=2)),
df.rename(lambda x:x+pd.DateOffset(hours=-2))])
.sort_index()
.resample('30min')
.ffill())
新答案(假设数据是熊猫系列),
def func(s):
df = (pd.concat([s, s.rename(lambda x:x+pd.DateOffset(hours=2)),
s.rename(lambda x:x+pd.DateOffset(hours=-2))])
.sort_index()
.resample('30min')
.ffill())
return df
pd.concat(func(data.iloc[[i]]) for i in range(data.shape[0]))