使用datetime根据持续时间创建行

使用datetime根据持续时间创建行,datetime,group-by,julia,timedelta,Datetime,Group By,Julia,Timedelta,我面临一个使用datetime编写代码的问题。我已经创建了一个我正在处理的场景。有人能帮我查一下朱莉娅的密码吗 输入: 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,

我面临一个使用datetime编写代码的问题。我已经创建了一个我正在处理的场景。有人能帮我查一下朱莉娅的密码吗

输入:

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
输出:

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编写了相同的代码。请参阅下面的链接 这里有一个解决方案:

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