MRE:
idx = pd.date_range('2015-07-03 08:00:00', periods=30,
freq='H')
data = np.random.randint(1, 100, size=len(idx))
df = pd.DataFrame({'index':idx, 'col':data})
df.set_index("index", inplace=True)
如下所示:
col
index
2015-07-03 08:00:00 96
2015-07-03 09:00:00 79
2015-07-03 10:00:00 15
2015-07-03 11:00:00 2
2015-07-03 12:00:00 84
2015-07-03 13:00:00 86
2015-07-03 14:00:00 5
.
.
.
请注意,数据框包含多天。由于频率是以小时为单位,因此从07/03 08:00:00开始,它将包含每小时的日期。
我想从05:00:00(包括第07/03天)获取所有数据,即使该数据在“ col”列中的值为0。
我想向后扩展,所以它从05:00:00开始。
不,我只是不能从05:00:00开始,因为我已经具有从08:00:00开始的数据帧。我试图使所有内容保持不变,但在开头添加3行,以包括05:00:00、06:00:00和07:00:00
答案 0 :(得分:2)
reindex方法可方便地更改索引值:
idx = pd.date_range('2015-07-03 08:00:00', periods=30, freq='H')
data = np.random.randint(1, 100, size=len(idx))
# use the index param to set index or you might lose the freq
df = pd.DataFrame({'col':data}, index=idx)
# reindex with a new index
start = df.tshift(-3).index[0]
end = df.index[-1]
new_index = pd.date_range(start, end, freq='H')
new_df = df.reindex(new_index)
resample对于日期索引也非常有用
答案 1 :(得分:0)
只需将代码中的时间从08:00:00更改为05:00:00,然后再创建3行并将此数据帧更新为现有数据帧即可。
idx1 = pd.date_range('2015-07-03 05:00:00', periods=3,freq='H')
df1 = pd.DataFrame({'index': idx1 ,'col':np.random.randint(1,100,size = 3)})
df1.set_index('index',inplace=True)
df = df1.append(df)
print(df)
将此代码段添加到您的代码...