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)
关键修改点
- 去掉
.date()调用:避免生成Power BI不兼容的Python原生date对象,保留pandas的datetime64类型 - 异常值返回
pd.NaT:替代直接返回原val,统一用pandas的空日期类型,确保列类型一致,Power BI能正确识别为日期类型
额外提醒
如果你的日期列原本就有非日期格式的脏数据,建议先在数据库层面做清洗,或者在脚本里增加更严格的格式校验,避免后续Power BI加载时出现类型混乱。
内容的提问来源于stack exchange,提问作者Sky_0820
相关产品推荐
相关产品推荐

