【问题标题】:Cannot convert 16 digit number to human readable date无法将 16 位数字转换为人类可读的日期
【发布时间】:2017-11-28 20:12:50
【问题描述】:

我已将一个大型 csv 文件读入 Jupyter 笔记本,其中包含一列 16 位数字(例如 1352160000000000)作为 Epoch/Unix 时间戳。

我在一个在线 Epoch/Unix 时间戳转换器网站上检查了这个数字,它返回了我知道它应该返回的时间(格林威治标准时间:2012 年 11 月 6 日,星期二 12:00:00 AM)。

然后我使用以下代码(改编自本网站上此问题的其他答案):df['TIME'] = pd.to_datetime(df['TIME'], unit='u') 将此数字转换为我的数据框中的人类可读形式,但我得到一个错误,或者我得到 (1970- 01-16 15:36:00.000)。

谁能指出我哪里出错了,我错过了什么?

【问题讨论】:

  • 在 Linux 上,我得到 Die Aug 30 01:00:00 CET 42850214 的时间戳...正确的时间戳是 date -d @1352160000。所以你得先除以1M。

标签: python pandas jupyter-notebook


【解决方案1】:

您需要使用“我们”单位。

df['TIME'] = pd.to_datetime(df['TIME'], unit='us')

pd.to_datetime(1352160000000000,unit='us')
Out[24]: Timestamp('2012-11-06 00:00:00')

【讨论】:

  • 感谢您的回答,它比我先将整列除以 1,000,000 然后设置“unit='s”的工作要简洁得多。
【解决方案2】:

unit微秒,所以你应该使用'us' 作为unit

pd.to_datetime(1352160000000000<b>, unit='us'</b>)

例如:

>>> pd.to_datetime(1352160000000000, unit='us')
Timestamp('2012-11-06 00:00:00')

【讨论】:

  • 感谢您的回答。如上所述,它比我的解决方法效果更好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 2018-05-10
  • 2012-06-16
  • 1970-01-01
相关资源
最近更新 更多