【问题标题】:Python strptime missing some milliseconds when running script in different computer在不同的计算机上运行脚本时,Python strptime 缺少几毫秒
【发布时间】:2021-03-27 19:39:03
【问题描述】:

我正在将 pandas 数据帧时间戳列格式化为 unix 时间戳,如下所示

from datetime import datetime

df["col_in_unix"] = df["example_col"].\
                        apply(lambda x: datetime.strptime(x, '%Y-%m-%d %H:%M:%S.%f').timestamp())

当我在我的电脑上运行它时,我会得到一个时间戳

datetime.strptime("2020-12-09 13:27:48.172793", '%Y-%m-%d %H:%M:%S.%f').timestamp()

1607513268.172793

但是当我在不同的 windows pc 上运行代码时,我有时会得到答案

1607513268.17

这发生在数据框列中的所有时间戳上,是什么给出的?我还使用 Pyinstaller 从脚本中制作了 .exe 文件,但仍然是同样的问题

【问题讨论】:

  • 您运行它的第二个操作系统是什么?
  • 这一切都在带有 1809 更新 @sophros 的 Windows 10 上
  • 为确保这不是格式问题,请设置小数位以显式打印,例如print( f"{v:.6f}" ) v 是你的价值。
  • 按照@MrFuppes 的建议打印值后,我注意到时间戳的来源有时会以毫秒为单位降低分辨率

标签: python python-3.x pandas datetime unix-timestamp


【解决方案1】:

我想知道这是否与以下任何一个都无关:

  1. Differences in system time resolution 由于硬件/驱动等不同。
  2. precision setting for pandas and/or the dataframe
  3. Similar issue 在 C# 中针对 Windows 32b 与 64b 进行了描述 (您可能会在 32b 和 64b 版本的 Python 之间观察到类似的问题)。
  4. 其他一些因素

【讨论】:

  • 感谢您的输入,这与我的脚本无关。显然我获取数据的地方有问题,现在已修复:)
  • 你的意思是不同的“磁盘速度”,因此读取数据需要不同的时间?
猜你喜欢
  • 2022-10-14
  • 2020-06-26
  • 1970-01-01
  • 2010-12-26
  • 2014-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多