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

如何在Pandas DataFrame中将"02-04-20189.45"格式字符串转为datetime类型?

解决Pandas中特殊格式日期字符串转datetime的问题

嘿,我太懂你这种被奇葩日期格式折腾的感受了——这个「日-月-年小时(24制).分钟」的格式居然把年份和小时直接连在一起,确实很坑!不过咱们用点字符串处理和正则的技巧就能轻松搞定,下面给你两种实用的方案:

方案1:分步拆分处理(直观易懂)

如果喜欢清晰的步骤,咱们可以把日期和时间部分拆开,再拼接成标准格式:

import pandas as pd

# 假设你的DataFrame列名为`date_str`
# 1. 拆分日期部分(前10位:日-月-年)和时间部分(剩余字符:小时.分钟)
df['date_part'] = df['date_str'].str[:10]
df['time_part'] = df['date_str'].str[10:]

# 2. 把时间部分的点换成冒号,并且给1位小时补前导零(比如9.45 → 09:45)
df['time_part'] = df['time_part'].str.replace('.', ':').str.zfill(5)

# 3. 拼接成标准的日期时间字符串
df['datetime_str'] = df['date_part'] + ' ' + df['time_part']

# 4. 转换为datetime类型
df['datetime'] = pd.to_datetime(df['datetime_str'], format='%d-%m-%Y %H:%M')

# 要是不需要中间列,可以直接删掉
df = df.drop(['date_part', 'time_part', 'datetime_str'], axis=1)

方案2:正则表达式一键转换(简洁高效)

如果想少写点代码,用正则表达式直接替换成标准格式是更高效的选择:

import pandas as pd

# 用正则匹配并重构日期时间字符串
df['datetime'] = pd.to_datetime(
    df['date_str'].str.replace(r'(\d{2}-\d{2}-\d{4})(\d+)\.(\d{2})', r'\1 \2:\3'),
    format='%d-%m-%Y %H:%M',
    errors='coerce'  # 可选:把格式错误的字符串转为NaT,方便后续排查
)

正则说明:

  • (\d{2}-\d{2}-\d{4}):匹配「日-月-年」的固定长度部分(比如02-04-2018)
  • (\d+):匹配小时部分(1位或2位数字,比如9或19)
  • \.(\d{2}):匹配分隔点和分钟部分(比如.45)
  • 替换后的\1 \2:\3会把原字符串变成日-月-年 小时:分钟的标准格式,再用pd.to_datetime就能轻松识别了。

两种方案都能完美处理你给出的示例值"02-04-20189.45",转换后会变成2018-04-02 09:45:00的datetime类型~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:37:36