我正在尝试在 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 脚本后更改其类型。
尝试调整您的代码,如下所示:
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() 以确保时间组件设置为午夜,标准化日期时间对象)