繁体   English   中英

将具有多个时区的日期时间列转换为纪元时间戳

[英]Convert datetime column with multiple timezones to epoch timestamp

我有一个包含多个时区的日期时间列,我想将其转换为纪元时间戳:

pd.DataFrame(['2020-09-29 09:30:00-04:00', '2020-09-29 10:30:00-04:00', '2020-09-29 11:00:00-05:00'], columns = ['datetime'])

所需的结果如下所示:

                    datetime   timestamp
0  2020-09-29 09:30:00-04:00  1601386200
1  2020-09-29 10:30:00-04:00  1601389800
2  2020-09-29 11:00:00-05:00  1601395200

(注2020-09-29 11:00:00-05:00 tz)

我试过:

df['timestamp'] = pd.to_datetime(df['datetime']).astype(int) // 10 ** 9

datetime只有一个时区信息但抛出一个int() argument must be a string, a bytes-like object or a number, not 'datetime.datetime'错误时,当时区信息不同并且我不确定时,它运行良好为什么熊猫无法识别这一点。

我想人们可能会问类似的问题,但找不到确切的解决方案。 有任何想法吗? 谢谢!

您有混合时区,因此您想将utc=True传递给to_datetime

pd.to_datetime(df['datetime'], utc=True).astype(int) // 10 ** 9

输出:

0    1601386200
1    1601389800
2    1601395200
Name: datetime, dtype: int64

使用pd.Timestamp

df['timestamp'] = df['datetime'].apply(lambda x: int(pd.Timestamp(x).timestamp()))
df

datetime    timestamp
0   2020-09-29 09:30:00-04:00   1601386200
1   2020-09-29 10:30:00-04:00   1601389800
2   2020-09-29 11:00:00-05:00   1601395200

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM