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

如何在Python中创建包含公历与伊斯兰历日期的DataFrame

如何在Python中创建包含公历与伊斯兰历信息的DataFrame

要生成符合要求的DataFrame,我们可以借助pandas处理日期数据,hijri-converter实现公历与伊斯兰历的转换,步骤如下:

1. 安装依赖库

首先安装所需的第三方库:

pip install pandas hijri-converter

2. 完整实现代码

import pandas as pd
from hijri_converter import convert
from hijri_converter.constants import MONTHS_EN, MONTHS_AR, WEEKDAYS_EN, WEEKDAYS_AR

# 生成目标公历日期范围(可根据需求调整起止日期)
gregorian_dates = pd.date_range(start='2019-12-01', end='2019-12-02')

# 存储所有数据的列表
data_records = []

for date in gregorian_dates:
    # 提取公历日期的各部分信息
    greg_date_str = date.strftime('%Y-%m-%d')
    greg_year = date.year
    greg_month = date.month
    greg_day = date.day
    
    # 将公历日期转换为伊斯兰历对象
    hijri_obj = convert.Gregorian(date.year, date.month, date.day).to_hijri()
    hij_date_str = hijri_obj.strftime('%Y-%m-%d')
    
    # 获取伊斯兰历月份的英文、阿拉伯语名称
    hij_month_en = MONTHS_EN[hijri_obj.month]
    hij_month_ar = MONTHS_AR[hijri_obj.month]
    
    # 处理星期几的索引转换:pandas weekday()返回0=周一,对应伊斯兰历星期索引0=周日
    weekday_index = date.weekday() + 1
    if weekday_index == 7:
        weekday_index = 0
    # 获取星期几的英文、阿拉伯语名称
    hij_day_en = WEEKDAYS_EN[weekday_index]
    hij_day_ar = WEEKDAYS_AR[weekday_index]
    
    # 将单条记录添加到列表
    data_records.append([
        greg_date_str, greg_year, greg_month, greg_day,
        hij_date_str, hij_month_en, hij_month_ar,
        hij_day_en, hij_day_ar
    ])

# 构造DataFrame
df = pd.DataFrame(
    data_records,
    columns=[
        'gregorian_date', 'gregorian_year', 'gregorian_month', 'gregorian_day',
        'hijri_date', 'hijri_month_en_name', 'hijri_month_ar_name',
        'hijri_day_en_name', 'hijri_day_ar_name'
    ]
)

# 输出结果
print(df)

3. 代码说明

  • 日期范围:通过pd.date_range生成需要处理的公历日期序列,可自由调整起止日期;
  • 伊斯兰历转换:hijri-converter库提供了成熟的公历转伊斯兰历功能,直接调用convert.Gregorian().to_hijri()即可;
  • 名称映射:库内置的MONTHS_EN、MONTHS_AR、WEEKDAYS_EN、WEEKDAYS_AR常量直接提供了对应名称的映射,无需手动编写;
  • 星期索引调整:由于pandas与伊斯兰历星期索引的起始值不同,需要做简单的索引转换以匹配正确的星期名称。

运行代码后,将得到与示例格式完全一致的DataFrame。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:41:34