我很确定这不是最Pythonic的答案,所以我欢迎评论来改进它,但我相信你可以做这样的事情
首先创建您想要值的所有日期时间对象
num_minutes = 120
base = datetime.datetime(2015, 02, 16, 00, 00, 00)
date_list = [base + datetime.timedelta(minutes=x) for x in range(0, num_minutes)]
# set num_minutes for whatever is the correct number of minutes you require
然后使用这些索引值创建一个“假”数据框
new_data = [dict(StartTime=d, fake_val=np.NaN) for d in date_list]
new_df = pd.DataFrame(new_data)
EDIT:更正的反应
现在我们想要将两个数据帧合并为一个(并按日期排序):
final_df = new_df.merge(df, how='outer', on='date').sort(columns='date')
final_df
现在将按日期排序并包含正确的值StartLevel
当你有数据并且NaN
当你没有数据时。然后你可以打电话interpolate
EDIT:未调用插值inplace
默认情况下,因此您需要设置该标志或保存结果
final_df = final_df.interpolate()
or
final_df.interpolate(inplace=True)
显然fake_val
一旦合并了好的数据,就可以丢弃该列。创建该数据帧的目的是让一个数据帧包含您想要的所有值(这是我确信有一个更Pythonic的答案的地方)
完整文档interpolate
可以被找寻到here http://pandas.pydata.org/pandas-docs/dev/generated/pandas.DataFrame.interpolate.html