在 Python 中将毫秒转换为日期时间

convert millisecond to datetime in Python

提问人:Gianni Spear 提问时间:7/5/2023 最后编辑:FObersteinerGianni Spear 更新时间:7/5/2023 访问量:68

问:

我有一组数据,其时间以毫秒为单位(time.stamp),其中每个值代表一个misure(10 Hz是仪器的工作时间):

enter image description here

enter image description here

在知道测量开始的年、月、日、小时、分钟和秒时,我想做的是转换为类型的日期时间

yyyy-mm-dd hh:min:sec.milliseconds

我通过创建日期时间列,在 python 中使用几行代码执行此操作:

flist = os.listdir(data_files)
for f in flist:
    df = pd.read_csv(data_files + "/" + f)
    yyyymmdd, hhmm, _ = f.split(".")
    yyyy = yyyymmdd[0:4]
    mm = yyyymmdd[4:6]
    dd = yyyymmdd[6:8]
    hh = hhmm[0:2]
    minute = hhmm[2:4]
    lst = []
    for ind in df.index:
        ts: float = df['time.stamp'][ind]
        d = f'{yyyy}-{mm}-{dd} {hh}:{minute}:{0}.{0}'
        dt = datetime.strptime(d, '%Y-%m-%d %H:%M:%S.%f')
        result = dt + timedelta(milliseconds=ts)
        lst.append(str(result))
    df['datetime'] = lst
    df.to_csv(os.path.normpath(data_dummy_files + "/" + f), index=False)

enter image description here

enter image description here

问题是最终数据是 这意味着测量的开始和结束之间大约经过了 4 分钟,实际上仪器运行了大约 60 分钟(1 小时)。2021-05-01 00:00:03.599900

python 日期 时间delta 日期转换 毫秒

评论

5赞 Cheeku 7/5/2023
您确定 A 列以毫秒为单位吗?如果你说它代表大约一个小时,那么这意味着 3600 秒,这意味着你应该这样做result = dt + timedelta(seconds=ts)
0赞 Grysik 7/5/2023
如果你有 10Hz 并且第一行是 0.10,那么你的 time.stamp 列似乎代表秒,而不是毫秒。检查@Cheeku评论,因为似乎有解决方案。
0赞 Gianni Spear 7/5/2023
是的。我只是一个研究中心的 IT。研究人员向我发送了零规格的数据,只有第一个 colmns 是毫秒,但我 dubit
0赞 FObersteiner 7/5/2023
有一个直接的“矢量化”解决方案:在将参考日期转换为 timdelta 后,将小数秒添加到参考日期中。前任:pd.Timestamp("2023-01-01") + pd.to_timedelta(df["time.stamp"], unit="s")

答: 暂无答案