如何用Pandas将DataFrame时区化时间转为加尔各答本地时间?
问题:如何移除Pandas Datetime列的时区偏移,显示加尔各答本地时间
我是Python和Pandas库的新手,在这个问题上完全陷入困境。我的DataFrame中有一个'timestamp'列(数据类型为datetime64[ns, 'Asia/Kolkata']),该列原本是int64格式的毫秒时间戳(如1748174400000、1748188800000等)。
我先用以下命令将其转为UTC感知型Datetime列:
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='ms', utc = True)
输出结果:(2025-05-25 12:00:00+00:00, 2025-05-25 16:00:00+00:00 etc..)
再用以下命令转换为Asia/Kolkata时区:
df['timestamp'] = df['timestamp'].dt.tz_convert('Asia/Kolkata')
输出结果:(2025-05-25 17:30:00+05:30, 2025-05-25 21:30:00+05:30 etc..)
我希望将该列转为加尔各答实际本地日期时间,而非带+05:30偏移的格式,请问该如何实现?
解决方案
方案1:移除时区信息,保留datetime类型
如果需要后续继续对该列进行日期时间运算,推荐这种方式。使用tz_localize(None)可以移除时区偏移,得到不带时区的本地datetime值:
df['timestamp'] = df['timestamp'].dt.tz_localize(None)
执行后,列的数据类型变为datetime64[ns],显示结果为:(2025-05-25 17:30:00, 2025-05-25 21:30:00 etc..)
方案2:转为字符串格式的本地时间
如果仅用于展示,不需要后续datetime运算,可以直接格式化为字符串:
df['timestamp_local'] = df['timestamp'].dt.strftime('%Y-%m-%d %H:%M:%S')
这会生成一个新的字符串列,内容为无偏移的加尔各答本地时间格式。
内容的提问来源于stack exchange,提问作者Vermaji
相关产品推荐
相关产品推荐

