Python 如何将微秒转换为人类可读的日期&;时间是多少?
因此,我试图将熊猫数据帧中的“事件时间”(时间单位为微秒,自1970-01-01 00:00 UTC起)列转换为人类可读的日期和时间 列名称:df['Event Time'] 输入:df['Event Time'].iloc[0]Python 如何将微秒转换为人类可读的日期&;时间是多少?,python,pandas,datetime,python-datetime,Python,Pandas,Datetime,Python Datetime,因此,我试图将熊猫数据帧中的“事件时间”(时间单位为微秒,自1970-01-01 00:00 UTC起)列转换为人类可读的日期和时间 列名称:df['Event Time'] 输入:df['Event Time'].iloc[0] 输出:1519952249827533 我需要一个脚本来转换整个列 我尝试了以下方法,但需要更简单的方法: from datetime import datetime, timedelta epoch = datetime(1970, 1, 1) cookie_mic
输出: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)
谢谢大家! 使用
pd.\u datetime
并将单位指定为微秒。请注意,微秒的单位是us
(几分钟前我还不知道(-:)
MCVE
如果需要字符串结果而不是时间戳
请使用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的更多信息,请参阅。因为它们是纳秒,我怀疑它们真的是微秒,就像OP说的那样。1519952249827533us在2018-03-02这一纪元之后,这似乎比1970-01-18更可能。@abarnert在这种情况下,一秒。@UlisesSotomayor你得到的是时间戳
对象,而不是字符串小数点只是其表示形式的一部分。当您需要打印它们或以其他方式将它们转换为字符串时,您可以在打印/转换时这样做。@UlisesSotomayor尤其是,Timestamp('2018-03-02 00:57:29')
与Timestamp('2018-03-02 00:57:29.000000')的值完全相同
好的,我添加了我所处理的代码,您可以撤消拇指吗?您的代码正在将时间戳转换为字符串。您真的希望这样做,还是希望将它们保留为时间戳对象(您可以对其进行算术和比较,存储在内存和磁盘中的时间越小,操作速度越快)并且只根据需要将它们转换为字符串,比如说,输出报告?
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
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