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

Power BI中Python脚本运行后日期类型异常变更的解决问询

解决Power BI中Python脚本导致日期列类型异常的问题

你的问题出在日期转换逻辑上:当前脚本用pd.to_datetime(val).date()把日期转成了Python原生的date对象,Power BI无法正确识别这种类型,会自动映射为Microsoft.ole.db.date,后续手动修改类型就会触发报错。

修改方案

直接保留pandas的datetime64类型(Power BI能完美识别),不要转成Python原生date对象,调整日期转换函数即可:

# Get the table data
table = dataset.copy()

# 定义Job缩写转全称的函数
def update_job(job):
    abbreviation = job.strip()[:4]
    if abbreviation in abbreviations_to_full_forms:
        return abbreviations_to_full_forms[abbreviation]
    else:
        return job

# 生成Full Job列
table['Full Job'] = table['Job'].apply(update_job)

# 修改后的日期转换函数:保留pandas datetime类型
def convert_to_date(val):
    try:
        # 直接返回pandas datetime对象,不转成Python原生date
        return pd.to_datetime(val)
    except (ValueError, AttributeError):
        # 异常值返回pd.NaT(pandas的空日期类型,Power BI能识别)
        return pd.NaT

# 处理日期列
date_columns = ['Actual_Start_Date', 'Misc_Title_3']
for column in date_columns:
    table[column] = table[column].apply(convert_to_date)

关键修改点

  1. 去掉.date()调用:避免生成Power BI不兼容的Python原生date对象,保留pandas的datetime64类型
  2. 异常值返回pd.NaT:替代直接返回原val,统一用pandas的空日期类型,确保列类型一致,Power BI能正确识别为日期类型

额外提醒

如果你的日期列原本就有非日期格式的脏数据,建议先在数据库层面做清洗,或者在脚本里增加更严格的格式校验,避免后续Power BI加载时出现类型混乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:33:20