如何将Object类型转换为北美时区的Datetime类型?
解决Pandas保留原始时区解析时间戳的问题
你的timestamp列是带时区偏移的字符串格式,直接用pd.to_datetime转换后仍为Object类型,大概率是因为数据中存在无效值(比如空字符串、空白行),或者Pandas未自动识别到时区格式。要保留原始时区并转为Datetime类型,可以按以下步骤处理:
第一步:清理无效数据
先过滤掉空值或非时间格式的行,避免解析失败导致列类型仍为Object:test = test[test['timestamp'].notna() & (test['timestamp'].str.strip() != '')]第二步:明确格式解析时区
使用format参数指定包含时区偏移的时间格式,强制Pandas识别并保留原始时区:test['timestamp'] = pd.to_datetime(test['timestamp'], format='%Y-%m-%d %H:%M:%S%z')
解析完成后,timestamp列的类型会变为datetime64[ns, pytz.FixedOffset],每个时间戳都会保留自身的原始时区偏移(比如-04:00、-05:00),不会被转换为UTC时区,同时支持后续的时区转换、时间计算等操作。
如果你的Pandas版本较新(>=1.1.0),也可以省略format参数,直接让Pandas自动推断格式:
test['timestamp'] = pd.to_datetime(test['timestamp'], infer_datetime_format=True)
内容的提问来源于stack exchange,提问作者Maxim Kir
相关产品推荐
相关产品推荐

