使用 pandas 将纪元时间转换为本地时间

Posted

技术标签:

【中文标题】使用 pandas 将纪元时间转换为本地时间【英文标题】:Coverting epoch time to local time using pandas 【发布时间】:2020-08-03 09:22:21 【问题描述】:

我有一个专栏,我将时间作为纪元时间。例如 1359699060370。我有大约百万行。现在我正在使用

df['datetime'] = pd.to_datetime(df['Real_First_Packet'], unit = 'ms')

我正在使用这个 '[datetime' 列来创建新列,例如一个用于日期,一个用于小时,依此类推。

df['day'] = df['datetime'].dt.day

但是 pd.to_datetime 返回的是 GMT 日期时间。我需要本地时间格式。所以我使用了以下代码

df['datetime'] = pd.DatetimeIndex(pd.to_datetime(df['Real_First_Packet'],unit='ms')).tz_localize('UTC').tz_convert('US/Eastern')

对于一百万行,这需要更多时间。有没有比上述方法更好的方法。

【问题讨论】:

【参考方案1】:

没有必要本地化到UTC,因为to_datetime 默认已经提供了。

将您的代码修改为以下内容:

df['datetime'] = pd.to_datetime(df['Real_First_Packet'], utc=True).dt.tz_convert('US/Eastern')

您可以通过分块或缓存来提高性能。在 2M 行时,我会考虑使用 map/reduce 工具,例如 hadoop 或 pyspark。

【讨论】:

以上是关于使用 pandas 将纪元时间转换为本地时间的主要内容,如果未能解决你的问题,请参考以下文章

从整数纪元时间值转换为本地时间

将 UTC 纪元转换为本地日期

将 JSON 纪元时间转换为本地人类可读日期

Perl 将自纪元以来的微秒转换为本地时间

在 Windows 上的 perl 中将纪元转换为本地时间

在 Python 中使用 pytz 本地化纪元时间