You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas时间戳列导入Redshift报错,如何转换为标准格式?

问题场景

我有如下DataFrame:

d = {'Timestamp': ['Nov 16 10:39:54', 'Nov 16 10:39:54', 'Nov 16 10:39:54', 'Nov 16 10:39:54', 'Nov 16 10:40:17']}
df_sample = pd.DataFrame(data=d)
df_sample.head()

尝试将其加载到Redshift表时出现错误,错误信息如下:

ProgrammingError: {'S': 'ERROR', 'C': '42601', 'M': 'syntax error at or near "Full"', 'P': '88', 'F': '/home/ec2-user/padb/src/pg/src/backend/parser/parser_scan.l', 'L': '732', 'R': 'yyerror'}

虽可能是其他列导致问题,但想了解如何将该时间戳列转换为标准datetime格式。

时间戳转换方案

可以使用pandas.to_datetime()方法将字符串格式的时间戳转换为标准datetime类型,针对你的时间格式(月份缩写+日期+时分秒),指定format参数能确保转换准确高效:

import pandas as pd

# 原DataFrame
d = {'Timestamp': ['Nov 16 10:39:54', 'Nov 16 10:39:54', 'Nov 16 10:39:54', 'Nov 16 10:39:54', 'Nov 16 10:40:17']}
df_sample = pd.DataFrame(data=d)

# 转换为标准datetime格式
df_sample['Timestamp'] = pd.to_datetime(df_sample['Timestamp'], format='%b %d %H:%M:%S')

格式参数说明:

  • %b 匹配英文月份缩写(如Nov对应11月)
  • %d 匹配两位数字的日期
  • %H:%M:%S 匹配24小时制的时分秒

由于Redshift的TIMESTAMP类型要求完整的年-月-日-时分秒格式,而原始数据缺少年份,需根据业务场景手动补充:

# 示例补充年份为2024,可按需修改
df_sample['Timestamp'] = df_sample['Timestamp'].apply(lambda x: x.replace(year=2024))

转换后的数据列会是标准datetime类型,符合Redshift对时间字段的格式要求。

内容的提问来源于stack exchange,提问作者Wolfy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:55:45