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

Coverting epoch time to local time using pandas

我有一列我将时间作为纪元时间。例如 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')

处理一百万行需要更多时间。有没有比上面的方法更好的方法呢

不需要本地化到 UTC,因为它已经在 to_datetime 默认设置中提供。

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

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

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