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

Pandas中如何补零合并日期时间并实现时间点减5小时?

解决方案

1. 手动补零并使用datetime.combine合并

假设你的CSV包含date(示例格式:2023-8-5)和time(示例格式:9:3)两列,可按以下逻辑批量处理:

先导入依赖模块:

import pandas as pd
from datetime import datetime, timedelta

定义处理函数并应用到每一行:

def process_datetime(row):
    # 补零日期字符串,转换为date对象
    year, month, day = row['date'].split('-')
    formatted_date = f"{year}-{month.zfill(2)}-{day.zfill(2)}"
    date_obj = datetime.fromisoformat(formatted_date).date()
    
    # 补零时间字符串,转换为time对象(默认补充秒为00)
    hour, minute = row['time'].split(':')
    formatted_time = f"{hour.zfill(2)}:{minute.zfill(2)}:00"
    time_obj = datetime.fromisoformat(formatted_time).time()
    
    # *合并日期与时间对象*
    combined_dt = datetime.combine(date_obj, time_obj)
    # 减去5小时
    return combined_dt - timedelta(hours=5)

# 生成调整后的日期时间列
data['adjusted_datetime'] = data.apply(process_datetime, axis=1)

2. 更高效的pandas原生方案(推荐)

无需手动调用datetime.combine,pandas可直接合并并解析日期时间字符串,自动处理补零逻辑:

# 合并日期和时间字符串,按指定格式解析为datetime
data['combined_datetime'] = pd.to_datetime(
    data['date'] + ' ' + data['time'],
    format='%Y-%m-%d %H:%M'  # 根据你的实际格式调整,比如月/日/年用%m/%d/%Y
)
# 减去5小时
data['adjusted_datetime'] = data['combined_datetime'] - pd.Timedelta(hours=5)

关键提示

  • 如果日期或时间格式有特殊变体(如包含秒、使用斜杠分隔),只需修改字符串拆分规则或pd.to_datetime的format参数即可适配。
  • 数据量较大时,优先使用pandas原生方法,比apply循环的处理效率高得多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 03:23:25