Power Bi 和 Python 脚本不断改变类型

问题描述 投票:0回答:1

我正在尝试在 Power Bi 中运行 python 脚本,在我的数据库中,我有一组缩写,我需要在不同的列中将其转换为完整形式,因此我正在编写一个 python 脚本。它完美地完成了这项工作,但它所做的其他事情是它更改了与我的日期列混淆的列的类型,然后在脚本运行后它更改了日期类型,日期变成了 Microsot.ole.db.date

这是我的脚本:

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

# Define the function to apply the condition
def update_job(job):
    # Extract the abbreviation from the job
    abbreviation = job.strip()[:4]
    
    # Check if the abbreviation exists in the dictionary, if yes, return the corresponding full form
    if abbreviation in abbreviations_to_full_forms:
        return abbreviations_to_full_forms[abbreviation]
    else:
        return job

# Apply the function to the 'Job' column and create a new column 'Full Job'
table['Full Job'] = table['Job'].apply(update_job)

# Function to convert to date with error handling
def convert_to_date(val):
    try:
        return pd.to_datetime(val).date()
    except (ValueError, AttributeError):
        return val

# Convert date columns to date
date_columns = ['Actual_Start_Date', 'Misc_Title_3']  # Add your date columns here
for column in date_columns:
    table[column] = table[column].apply(convert_to_date)

我尝试手动更改类型,但整个列都充满了错误;正如您在上面的代码中看到的,我也应用了一些错误处理,但它仍然是相同的。

我想防止它在运行 python 脚本后更改其类型。

python powerbi
1个回答
0
投票

尝试调整您的代码,如下所示:

import pandas as pd

def convert_to_date(val):
    try:
        return pd.to_datetime(val).normalize()
    except (ValueError, AttributeError):
        return val

date_columns = ['Actual_Start_Date', 'Misc_Title_3']  
for column in date_columns:
    table[column] = table[column].apply(convert_to_date)

我只是尝试将日期保留为更容易被 Power BI 识别为日期的格式,而不将它们转换为日期对象。(我添加了 .normalize() 以确保时间组件设置为午夜,标准化日期时间对象)

© www.soinside.com 2019 - 2024. All rights reserved.