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

将Pandas中日期与时间字符串列合并为单个datetime类型列

问题:将Pandas中的日期时间字符串列合并为datetime类型

原始DataFrame数据:

date               time
0  Wed Mar 1 2023     7:00p
1  Sun Mar 12 2023    9:00p

两列均为字符串类型,时间中的p代表PM,且所有时间均为下午。需要将两列合并为单个datetime类型列,最终格式为dd/mm/yyyy hh:mm。

你之前的问题点

你手动移除日期前缀、替换月份缩写时,空格替换未生效,核心原因是变量名写错了:你定义的替换字典是date_replace,但调用replace时用的是month_replace,导致空格替换的规则根本没被执行。而且手动拼接转换的方式效率确实很低,完全可以用Pandas内置的日期解析函数一步到位。

高效解决方案

直接利用pd.to_datetime解析拼接后的日期时间字符串,无需手动替换:

import pandas as pd

# 示例数据
data = {
    'date': ['Wed Mar 1 2023', 'Sun Mar 12 2023'],
    'time': ['7:00p', '9:00p']
}
df = pd.DataFrame(data)

# 1. 拼接日期和时间字符串
df['datetime_combined'] = df['date'] + ' ' + df['time']

# 2. 解析为datetime类型,指定格式匹配原始字符串
df['date'] = pd.to_datetime(df['datetime_combined'], format='%a %b %d %Y %I:%M%p')

# 3. 转换为你需要的显示格式(如果需要字符串格式,否则保持datetime类型即可)
df['date'] = df['date'].dt.strftime('%d/%m/%Y %H:%M')

# 清理临时列(可选)
df.drop('datetime_combined', axis=1, inplace=True)

执行后得到的结果:

date
0  01/03/2023 19:00
1  12/03/2023 21:00

格式参数说明

  • %a:匹配星期缩写(如Wed、Sun)
  • %b:匹配月份缩写(如Mar)
  • %d:两位数字的日期(不足补0)
  • %Y:四位数字的年份
  • %I:12小时制的小时数
  • %M:两位数字的分钟数
  • %p:匹配AM/PM标识(自动识别p为PM,转换为24小时制)

如果不需要补0的日期/月份(比如期望1/3/2023而非01/03/2023),可以把strftime的格式改成%-d/%-m/%Y %H:%M(Linux/macOS)或%#d/%#m/%Y %H:%M(Windows)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 18:23:13