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

如何计算DataFrame中两个Solar Hijri日期字符串列差值

太阳回历字符串列计算时间差实现方案

实现思路

pandas默认的日期解析工具仅支持公历,无法直接识别Solar Hijri(太阳回历/波斯历)格式的日期字符串,需要先借助专门的回历处理库将字符串转为可运算的日期时间对象,再直接做差得到时间差。

操作步骤

  • 安装依赖库
    首先安装专门处理太阳回历的jdatetime库,执行命令:
    pip install jdatetime
    
  • 编写转换逻辑并计算差值
    完整可运行代码如下:
    import pandas as pd
    import jdatetime
    
    # 构造和给出结构一致的测试数据
    df = pd.DataFrame({
        'ft': ['1401/04/21 13:36:00', '1401/04/21 14:00:00'],
        'rt': ['1401/04/21 13:09:16', '1401/04/21 13:00:00']
    })
    
    # 定义太阳回历字符串转日期对象的函数
    def parse_solar_hijri(s):
        return jdatetime.datetime.strptime(s, '%Y/%m/%d %H:%M:%S')
    
    # 转换两列为可运算的日期类型
    df['ft'] = df['ft'].apply(parse_solar_hijri)
    df['rt'] = df['rt'].apply(parse_solar_hijri)
    
    # 直接相减得到ft - rt的时间差
    df['time_diff'] = df['ft'] - df['rt']
    

结果说明

运行后得到的time_diff列为标准时间差类型,对应测试数据结果为:

  • 第0行:26分钟44秒
  • 第1行:1小时

如果需要提取指定单位的差值,可以直接调用时间差的属性计算:

  • 总秒数:df['time_diff'].dt.total_seconds()
  • 总分钟数:df['time_diff'].dt.total_seconds() / 60
  • 总小时数:df['time_diff'].dt.total_seconds() / 3600

注意:不要直接使用pd.to_datetime()转换这两列,该方法默认按公历解析日期,会得到错误的解析结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:33:30