如何将Pandas DataFrame带时区的datetime列转换为目标无时区时间
解决方法
要将带+05:30时区的datetime列转换为目标无时区时间,可按以下步骤操作:
步骤说明
- 确保列是带时区感知的datetime类型:Pandas需要先识别出原始时间的时区信息,才能进行后续转换。
- 调整时间偏移:目标时间是原始时间加上5小时30分钟(或等价转换到对应时区)。
- 移除时区信息:将调整后的时间转换为无时区的datetime类型。
代码实现
方法一:通过时区转换实现
import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'date': [ '2024-02-21 19:52:22+05:30', '2024-02-21 19:29:14+05:30', '2024-02-21 19:06:18+05:30' ] }) # 1. 转换为带时区的datetime df['date'] = pd.to_datetime(df['date']) # 2. 转换到UTC+11时区(与原始时间加5.5小时效果一致) df['date'] = df['date'].dt.tz_convert('Etc/GMT-11') # 3. 移除时区信息 df['date'] = df['date'].dt.tz_localize(None)
方法二:直接添加时间偏移实现
如果明确知道需要添加的时长,也可以直接对时间做偏移计算:
import pandas as pd df = pd.DataFrame({ 'date': [ '2024-02-21 19:52:22+05:30', '2024-02-21 19:29:14+05:30', '2024-02-21 19:06:18+05:30' ] }) # 1. 转换为带时区的datetime df['date'] = pd.to_datetime(df['date']) # 2. 添加5小时30分钟的偏移,同时移除时区 df['date'] = (df['date'] + pd.Timedelta(hours=5, minutes=30)).dt.tz_localize(None)
执行后,df['date']会得到目标无时区时间:
date 2024-02-22 01:22:22 2024-02-22 00:59:14 2024-02-22 00:36:18
内容的提问来源于stack exchange,提问作者GK21
相关产品推荐
相关产品推荐

