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

含时区信息的DataFrame日期字段如何获取对应星期名称

带时区日期字段获取星期名称的方法

问题原因

.day_name()是pandas针对自身标准datetime64[ns, tz]时区日期类型设计的向量化方法,如果你的DataFrame日期列存的是原生Python带tzoffset自定义时区的datetime对象、列类型为object,直接调用该方法会因为类型不兼容失效。

可直接复用的解决方案

  • 方案1:类型转换后调用原生方法(推荐,适合大数据量,性能最优)
    先把日期列统一转换为pandas可识别的标准带时区日期类型,再直接调用.day_name()即可:

    import pandas as pd
    
    # 假设日期列名为date,转换时自动识别原时区信息,不会丢失时区偏移
    df['date'] = pd.to_datetime(df['date'])
    # 获取星期名称,默认返回英文全称
    df['weekday'] = df['date'].dt.day_name()
    # 需要中文星期名可指定locale参数:
    # df['weekday_cn'] = df['date'].dt.day_name(locale='zh_CN.UTF-8')
    

    用你给出的样例日期测试,返回结果为Tuesday,和实际日期(2021年3月23日为周二)完全匹配。

  • 方案2:逐行调用Python原生日期方法(适合小数据量临时处理)
    如果不想做类型转换,可以用apply逐行调用Python datetime自带的strftime方法提取星期名:

    # %A返回完整星期名称,%a返回星期缩写
    df['weekday'] = df['date'].apply(lambda x: x.strftime('%A'))
    

注意事项

不要直接在未做类型转换的object类型日期列上调用.dt访问器的相关方法,这类列存储的是Python原生对象,pandas对自定义时区属性的兼容性很差,很容易触发类型报错或返回错误结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:16:02