【问题标题】:How Can I Convert Microseconds to Human Readable Date & Time w/ Python Pandas?如何使用 Python Pandas 将微秒转换为人类可读的日期和时间?
【发布时间】:2018-12-02 05:45:49
【问题描述】:

所以我正在尝试将 pandas 数据框中的“事件时间”(自 1970 年 1 月 1 日 00:00:00 UTC 以来的微秒时间)列转换为人类可读的日期和时间。

列名称:df['Event Time']

输入:df['事件时间'].iloc[0]
输出:1519952249827533

我需要一个脚本来转换整个列。

我尝试了以下方法,但需要一些更简单的方法:

from datetime import datetime, timedelta
epoch = datetime(1970, 1, 1)
cookie_microseconds_since_epoch = df['Event Time'].iloc[0]
cookie_datetime = epoch + timedelta(microseconds=cookie_microseconds_since_epoch)
str(cookie_datetime)

谢谢!

【问题讨论】:

  • 好的,我添加了我处理的代码,你能撤消拇指吗?
  • 您的代码正在将时间戳转换为字符串。你真的想要那个,还是你想把它们保存为时间戳对象(你可以对其进行算术和比较——并且存储在内存和磁盘上的体积更小,操作速度更快)并且只将它们转换为字符串根据需要,例如,输出报告?

标签: python pandas datetime python-datetime


【解决方案1】:

使用pd.to_datetime 并将unit 指定为微秒。注意微秒单位是us(几分钟前我还不知道(-:)

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

MCVE

df = pd.DataFrame({'Event Time': [1519952249827533]})

df['Event Time'] = pd.to_datetime(df['Event Time'], unit='us').dt.floor('s')

df

           Event Time
0 2018-03-02 00:57:29

如果您想要字符串结果而不是 Timestamps,请使用 strftime

pd.to_datetime(df['Event Time'], unit='us').dt.strftime('%Y-%m-%d %H:%M:%S')

0    2018-03-02 00:57:29
Name: Event Time, dtype: object

有关使用 strftime 的更多信息,请参阅 strftime.org

【讨论】:

  • 因为它们是纳秒
  • 我怀疑它们确实是微秒,就像 OP 所说的那样。 1519952249827533us 纪元是 2018-03-02 之后,这似乎比 1970-01-18 更有可能。
  • @abarnert 在这种情况下,一秒。
  • @UlisesSotomayor 你得到的是Timestamp 对象,而不是字符串。小数点只是其表示的一部分。当您需要将它们打印出来或以其他方式将它们转换为字符串时,您可以在打印输出/转换时执行此操作。
  • @UlisesSotomayor 特别是,Timestamp('2018-03-02 00:57:29')Timestamp('2018-03-02 00:57:29.000000') 的值完全相同
猜你喜欢
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-17
  • 2021-12-30
  • 1970-01-01
  • 2021-06-28
  • 1970-01-01
相关资源
最近更新 更多