julia - 如何在 julia 的数据帧上为每个 DateTime x 轴附加零值
问题描述
我想绘制一个数据,但它的 x 轴是时间,对于每半小时的缺失值,我希望填充零。
using CSV, DataFrames, Dates
s="ts, v
2020-01-01T01:00:00, 3
2020-01-01T04:00:00, 6
2020-01-01T05:00:00, 1"
d=CSV.read(IOBuffer(s))
我希望像 d2 一样扩展d
s2="ts, v
2020-01-01T01:00:00, 3
2020-01-01T01:30:00, 0
2020-01-01T02:00:00, 0
2020-01-01T02:30:00, 0
2020-01-01T03:00:00, 0
2020-01-01T03:30:00, 0
2020-01-01T04:00:00, 6
2020-01-01T04:30:00, 0
2020-01-01T05:00:00, 1"
d2=CSV.read(IOBuffer(s2))
解决方案
我可能会做以下事情:
# Create half-hourly data frame with zeros from first to last observation
julia> df = DataFrame(ts = minimum(d.ts):Minute(30):maximum(d.ts), v_filled = 0);
# Join the existing observations onto this dataframe
julia> df = join(df, d, on = :ts, kind = :left);
# Replace zeros with observations where available
julia> df[.!ismissing.(df.v), :v_filled] = df[.!ismissing.(df.v), :v];
julia> df
9×3 DataFrame
│ Row │ ts │ v_filled │ v │
│ │ DateTime │ Int64 │ Int64⍰ │
├─────┼─────────────────────┼──────────┼─────────┤
│ 1 │ 2020-01-01T01:00:00 │ 3 │ 3 │
│ 2 │ 2020-01-01T01:30:00 │ 0 │ missing │
│ 3 │ 2020-01-01T02:00:00 │ 0 │ missing │
│ 4 │ 2020-01-01T02:30:00 │ 0 │ missing │
│ 5 │ 2020-01-01T03:00:00 │ 0 │ missing │
│ 6 │ 2020-01-01T03:30:00 │ 0 │ missing │
│ 7 │ 2020-01-01T04:00:00 │ 6 │ 6 │
│ 8 │ 2020-01-01T04:30:00 │ 0 │ missing │
│ 9 │ 2020-01-01T05:00:00 │ 1 │ 1 │
推荐阅读
- python - 当 PythonOperator 尝试调用 API 并下载数据时,Airflow DAG 失败
- reactjs - 为我的 CRA 打字稿项目中的几乎每个文件创建“dist”文件夹
- qt - 在当前鼠标坐标处从渐变中获取颜色
- c++ - 如何将一个类型专门化为一个范围?
- python - 使用ray并行化模拟器python
- c - Makefile 使用共享源构建客户端服务器应用程序
- python - 如何从位于不同子目录中的 python 脚本导入
- node.js - 有没有解决下载反应?
- blazor - blazor 服务器组件中的 CSS 隔离
- sql - 如何对一张表的引用进行唯一约束?