time_slots = [forecast_time_obj + datetime.timedelta(minutes=15 * i) for i in range(forecasting_period * 96)] df = pd.DataFrame({'date': time_slots[0:forecasting_period * 96], 'load(kw)': predict_sum[0:forecasting_period * 96]}) 优化代码
时间: 2024-02-01 10:17:08 浏览: 63
可以将时间列表和预测结果列表合并为一个二维列表,然后使用pandas.DataFrame.from_records()方法来创建DataFrame。这样可以避免使用显式的循环,提高代码效率。以下是优化后的代码示例:
```
import datetime
import pandas as pd
forecast_time_obj = datetime.datetime.now() # 预测开始时间
forecasting_period = 7 # 预测周期,单位为天
predict_sum = [1, 2, 3, 4] # 预测结果列表,仅作示例
time_slots = [[forecast_time_obj + datetime.timedelta(minutes=15 * i), predict_sum[i]] for i in range(forecasting_period * 96)]
df = pd.DataFrame.from_records(time_slots, columns=['date', 'load(kw)'])
```
这里使用了列表推导式生成时间和预测结果的二维列表,然后直接传入pandas.DataFrame.from_records()方法中创建DataFrame。注意,需要指定每一列的名称,可以通过columns参数来实现。
相关问题
time_slots = [] # 初始化时间段列表 for i in range(forecasting_period * 96): time_slot = forecast_time_obj + datetime.timedelta(minutes=15 * i) # 计算当前时间后的第i个时间段 time_slots.append(time_slot) 优化代码
可以使用列表推导式来一行代码实现初始化时间段列表,避免使用循环:
```
time_slots = [forecast_time_obj + datetime.timedelta(minutes=15 * i) for i in range(forecasting_period * 96)]
```
这样可以使代码更加简洁易读。
time_slots = [roll_time + datetime.timedelta(minutes=15 * i) for i in range(16)] 代码优化
可以使用列表推导式结合 `datetime.timedelta` 的加法来生成 `time_slots` 列表。同时,若时间间隔为固定值,可以将其提取出来作为常量,以提高代码可读性和可维护性。优化后的代码如下:
```python
TIME_INTERVAL = datetime.timedelta(minutes=15)
time_slots = [roll_time + i * TIME_INTERVAL for i in range(16)]
```
这样代码就更加简洁易懂,同时也方便后续维护。
阅读全文