python - 聚合和分发时间序列数据
问题描述
我在熊猫数据框中有一些时间序列数据,如下所示:
开始 | 结尾 | mw_values |
---|---|---|
2021-09-14 11:16:00 | 2021-09-14 11:27:11 | 0 |
2021-09-14 11:27:11 | 2021-09-14 11:30:00 | 100 |
2021-09-14 11:30:00 | 2021-09-14 11:33:59 | 1200 |
2021-09-14 11:33:59 | 2021-09-14 11:39:42 | 600 |
2021-09-14 11:39:42 | 2021-09-14 11:59:59 | 400 |
我需要将 mw_values 的总和分配到 15 分钟的时间段中,如下所示:
time_slots_15_min | sum_mw_values |
---|---|
2021-09-14 11:00 | 0 |
2021-09-14 11:15 | 100 |
2021-09-14 11:30 | 2200 |
2021-09-14 11:45 | 0 |
2021-09-14 12:00 | 0 |
有人知道我怎么能做到这一点吗?
请注意,开始和结束之间的间隔可能会重叠 2 个时隙。那么该值必须包含在它开始的时隙的总和中;例如,上面示例中的 mw_value 为 400。
解决方案
您可以重新采样您的数据框,以便在 15 分钟的 bin 中汇总数据。然后您可以重新索引该帧,使其与您所需的开始/结束/频率时间相匹配。
freq = "15min"
new_index = pd.date_range(
"2021-09-14 11:00:00", "2021-09-14 12:00:00", freq=freq
)
out = (
df.resample(freq, on="begin")["mw_values"]
.sum()
.reindex(new_index, fill_value=0)
.to_frame("sum_mw_values")
)
print(out)
sum_mw_values
2021-09-14 11:00:00 0
2021-09-14 11:15:00 100
2021-09-14 11:30:00 2200
2021-09-14 11:45:00 0
2021-09-14 12:00:00 0
推荐阅读
- python - 使用 Python 时如何在 Google Colab 中引用文件?
- python - 在 plt.plot 的 for 循环中更改标题并创建 6x16 子图
- java - Spring Boot 配置中列表的环境变量
- database - 哪个数据库存储气象站生成的气象数据?
- hive - 无法使用 Hue 编辑器在 Hive 查询中获得 2 位小数
- python - 为什么 Django 找不到合适的模板
- ruby-on-rails - Ruby/Rails:为什么 render json: {hello: 'world'} 会访问我的数据库?
- c# - 关于 azure bot 中的瀑布步骤
- gsap - How to trigger TimelineMax animation when ScrollToPlugin is scrolling (ScrollMagic)?
- string - 标签在 javafx 1.0 中以 ''..." 结尾