如何在 Julia 数据框中转换纪元/unix 时间?

Pea*_*ece 4 datetime timestamp dataframe julia

我正在尝试找到df[!, r"TimeStamp"]unix纪元时间转换为带有9 小时的日期时间格式的解决方案,例如pd.to_datetime(df["TimeStamp"], unit = "ms") 在 Python 中。

这里是数据框的示例Julia

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

并且,以下是预期输出。

    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
Run Code Online (Sandbox Code Playgroud)

更新:

我有unix2datetime()使用for 循环的解决方案,@ MrFuppes 有帮助,但想知道Julia 中是否有类似pd.to_datetimeand 的函数。timedelta(hours = 9)

MrF*_*pes 5

您可以将时间戳列广播到 DateTime。添加持续时间也非常简单:

\n
using Dates\nusing DataFrames\n\ndf = DataFrame(TimeStamp=[1632868171713,1632868172713,1632868173713],\n               Roll=[-1.1, -2, 1],\n               Pitch=[-1, -1, 3.1],\n               Yaw=[-1, -4.2, 2],\n               )\n\ndf.Date = unix2datetime.(df.TimeStamp / 1000)\n\n# or map it:\n# df.Date = map(unix2datetime, df.TimeStamp / 1000)\n\ndf.DatePlusSevenH = df.Date + Hour(7)\n\nprintln(df)\n\n# 3\xc3\x976 DataFrame\n#  Row \xe2\x94\x82 TimeStamp      Roll     Pitch    Yaw      Date                     DatePlusSevenH\n#      \xe2\x94\x82 Int64          Float64  Float64  Float64  DateTime                 DateTime\n# \xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\xbc\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\n#    1 \xe2\x94\x82 1632868171713     -1.1     -1.0     -1.0  2021-09-28T22:29:31.713  2021-09-29T05:29:31.713 \n#    2 \xe2\x94\x82 1632868172713     -2.0     -1.0     -4.2  2021-09-28T22:29:32.713  2021-09-29T05:29:32.713 \n#    3 \xe2\x94\x82 1632868173713      1.0      3.1      2.0  2021-09-28T22:29:33.713  2021-09-29T05:29:33.713 \n\n
Run Code Online (Sandbox Code Playgroud)\n

  • 更好的是,在任何地方使用广播以避免分配临时向量:`df.Date = unix2datetime.(df.TimeStamp ./ 1000)`。 (2认同)