Skip to main content
 首页 » 编程设计

python之如何转换 Pandas 中日期时间列的时区,然后删除时区

2025年05月04日11Renyi-Fan

我有一个包含日期时间的列(非索引列)。例如,前五个条目看起来像这样:

[Timestamp('2018-11-15 19:57:55'), 
 Timestamp('2018-11-15 19:59:46'), 
 Timestamp('2018-11-15 20:00:59'), 
 Timestamp('2018-11-15 20:01:41'), 
 Timestamp('2018-11-15 20:01:54')] 

我想将条目从 UTC 转换为太平洋时区。假设该列名为 times 我目前正在执行以下操作:

times.dt.tz_localize('GMT').dt.tz_convert('America/Los_Angeles')

虽然这成功地将列从 UTC 转换为 PST,但输出包含我不想要的无关组件。它看起来像下面这样:

[Timestamp('2018-11-15 11:57:55-0800', tz='America/Los_Angeles'), 
 Timestamp('2018-11-15 11:59:46-0800', tz='America/Los_Angeles'), 
 Timestamp('2018-11-15 12:00:59-0800', tz='America/Los_Angeles'), 
 Timestamp('2018-11-15 12:01:41-0800', tz='America/Los_Angeles'), 
 Timestamp('2018-11-15 12:01:54-0800', tz='America/Los_Angeles')] 

如何从时间戳中删除或忽略 -0800?谢谢!

请您参考如下方法:

只需添加 .tz_localize(None) 的最后一步:

import pandas as pd 
d = pd.Series(['2018-11-15 19:57:55', '2018-11-15 19:59:46']) 
d = pd.to_datetime(d) 
d 
0   2018-11-15 19:57:55 
1   2018-11-15 19:59:46 
dtype: datetime64[ns] 
 
d_pacific_tz_aware = d.dt.tz_localize("GMT").dt.tz_convert('America/Los_Angeles') 
d_pacific_tz_aware 
0   2018-11-15 11:57:55-08:00 
1   2018-11-15 11:59:46-08:00 
dtype: datetime64[ns, America/Los_Angeles] 
 
 
d_pacific_tz_naive = d.dt.tz_localize("GMT").dt.tz_convert('America/Los_Angeles').dt.tz_localize(None) 
d_pacific_tz_naive 
0   2018-11-15 11:57:55 
1   2018-11-15 11:59:46 
dtype: datetime64[ns]