带引号日期与时间列合并为Timestamp失败,求解决方法
解决日期时间列合并为Timestamp的问题
我完全懂你这种明明看起来格式没问题,但转换就是报错的烦躁感——这事儿大概率是字符串里藏着多余的双引号在搞鬼,咱们一步步来搞定它:
第一步:清理字符串中的双引号
看你的报错信息:time data '"3.11.20"' does not match format '%d.%m.%y',这里的日期字符串前后都带着双引号,这才是格式不匹配的核心原因。先把这些多余的引号去掉:
# 清理日期列和时间列的双引号 df["colA"] = df["colA"].str.strip('"') df["colB"] = df["colB"].str.strip('"')
第二步:合并并转换为Timestamp
现在字符串干净了,咱们再尝试合并转换,这里有两种稳妥的方式:
方式一:指定明确的格式
如果你确定日期是日.月.年的格式,直接指定格式参数,同时加上dayfirst=True确保解析顺序正确(避免把月和日搞混):
df["Timestamp"] = pd.to_datetime( df["colA"] + " " + df["colB"], format="%d.%m.%y %H:%M:%S", dayfirst=True )
注:%d对应日、%m对应月、%y对应两位年份;%H:%M:%S对应24小时制的时间格式。
方式二:让Pandas自动推断格式
如果担心格式细节(比如一位数的日/月没有补零),可以开启自动推断,同样加上dayfirst=True保证解析顺序:
df["Timestamp"] = pd.to_datetime( df["colA"] + " " + df["colB"], dayfirst=True, infer_datetime_format=True )
为什么之前的尝试失败?
- 第一次合并时报错,是因为原始字符串带着双引号,合并后变成
"3.11.20" "11:38:48",这种带嵌套引号的格式Pandas完全无法识别; - 单独转换日期列时报错,同样是因为双引号的存在,导致
"3.11.20"和你指定的%d.%m.%y纯数字格式不匹配。
内容的提问来源于stack exchange,提问作者SMS
相关产品推荐
相关产品推荐

