【问题标题】:Creating rows as per duration using datetime JULIA使用日期时间 JULIA 根据持续时间创建行
【发布时间】:2021-03-16 10:42:09
【问题描述】:

我在使用日期时间编写代码时遇到问题。我已经创建了一个我正在处理的场景。有人可以帮我解决 JULIA 中的代码吗?

输入:

Name, Channel, Duration, Start_time
John, A, 2, 16:00:00
Joseph, B, 3, 15:05:00

输出:

Name, Channel, Duration, Start_time
John, A, 2, 16:00:00
John, A, 2, 16:01:00
Joseph, B, 3, 15:05:00
Joseph, B, 3, 15:06:00
Joseph, B, 3, 15:07:00

提前谢谢你。

用 Python 编写相同的代码。参考以下链接 Creating rows as per duration using datetime pandas

【问题讨论】:

    标签: datetime group-by julia timedelta


    【解决方案1】:

    这里有一个解决方案:

    julia> df = DataFrame(Name=["John", "Joseph"], Channel=["A", "B"], Duration=[2,3], Start_Time=Time.(["16:00:00", "15:05:00"]))
    2×4 DataFrame
     Row │ Name    Channel  Duration  Start_Time 
         │ String  String   Int64     Time       
    ─────┼───────────────────────────────────────
       1 │ John    A               2  16:00:00
       2 │ Joseph  B               3  15:05:00
    
    julia> flatten(transform(df, [:Start_Time, :Duration] => ByRow((x,y) -> x .+ Minute.(0:y-1)) => :Start_Time), :Start_Time)
    5×4 DataFrame
     Row │ Name    Channel  Duration  Start_Time 
         │ String  String   Int64     Time       
    ─────┼───────────────────────────────────────
       1 │ John    A               2  16:00:00
       2 │ John    A               2  16:01:00
       3 │ Joseph  B               3  15:05:00
       4 │ Joseph  B               3  15:06:00
       5 │ Joseph  B               3  15:07:00
    

    如果您可以假设您的名称/频道/持续时间组合是唯一的,并且您想确保代码中的情况是这样,您也可以这样做:

    julia> combine(groupby(df, Not(:Start_Time)), [:Start_Time, :Duration] => ((x, y) -> only(x) .+ Minute.(0:only(y)-1)) => :Start_Time)
    5×4 DataFrame
     Row │ Name    Channel  Duration  Start_Time 
         │ String  String   Int64     Time       
    ─────┼───────────────────────────────────────
       1 │ John    A               2  16:00:00
       2 │ John    A               2  16:01:00
       3 │ Joseph  B               3  15:05:00
       4 │ Joseph  B               3  15:06:00
       5 │ Joseph  B               3  15:07:00
    

    【讨论】:

      猜你喜欢
      • 2019-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 2021-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多