如何在Julia数据框架中转换epoch/unix时间?



我正试图找到转换df[!, r"TimeStamp"]的解决方案,这是unix时代或time, to datetime格式,加9小时,如Python中的pd.to_datetime(df["TimeStamp"], unit = "ms")

Julia数据框的例子:

df = DataFrame(TimeStamp = [1632868171713,1632868172713,1632868173713], 
Roll = [-1.1, -2, 1],
Pitch =[-1, -1, 3.1],
Yaw = [-1, -4.2, 2],
)

和,下面是预期输出。

TimeStamp                  Roll     Pitch   Yaw
Date                       Float64  Float64 Float64
1   2021-09-29 07:29:31.713    -1.1     -1.0    -1.0
2   2021-09-29 07:29:32.713    -2.0     -1.0    -4.2
3   2021-09-29 07:29:33.713     1.0      3.1    2.0

更新:

我有解决方案与unix2datetime()使用循环,带@MrFuppes帮助,但是不知道在Julia中是否有像pd.to_datetimetimedelta(hours = 9)这样的功能。

可以将时间戳列广播给DateTime。添加持续时间也非常直接:

using Dates
using DataFrames
df = DataFrame(TimeStamp=[1632868171713,1632868172713,1632868173713],
Roll=[-1.1, -2, 1],
Pitch=[-1, -1, 3.1],
Yaw=[-1, -4.2, 2],
)
df.Date = unix2datetime.(df.TimeStamp / 1000)
# or map it:
# df.Date = map(unix2datetime, df.TimeStamp / 1000)
df.DatePlusSevenH = df.Date + Hour(7)
println(df)
# 3×6 DataFrame
#  Row │ TimeStamp      Roll     Pitch    Yaw      Date                     DatePlusSevenH
#      │ Int64          Float64  Float64  Float64  DateTime                 DateTime
# ─────┼────────────────────────────────────────────────────────────────────────────────────────────
#    1 │ 1632868171713     -1.1     -1.0     -1.0  2021-09-28T22:29:31.713  2021-09-29T05:29:31.713 
#    2 │ 1632868172713     -2.0     -1.0     -4.2  2021-09-28T22:29:32.713  2021-09-29T05:29:32.713 
#    3 │ 1632868173713      1.0      3.1      2.0  2021-09-28T22:29:33.713  2021-09-29T05:29:33.713