gpt4 book ai didi

python - 将日期从 xlsb 文件格式化为 MM/DD/YYYY

转载 作者:行者123 更新时间:2023-12-04 14:20:41 26 4
gpt4 key购买 nike

我有一个 .xlsb 文件,我想使用 Pandas 进行分析。我找到了如何使用 pyxlsb 打开文件并创建另一个数据集。但是,现在的问题是时间格式已更改为不同的数字格式(例如 41256)。

我目前使用的代码是:

dataset = []

with open_xlsb(file) as wb: #opening an xlsb file workbook
with wb.get_sheet(1) as sheet1:
for row in sheet1.rows():
dataset.append([item.v for item in row])

dataset= pd.DataFrame(dataset[1:], columns=dataset[0])

我已经尝试了 convert_date 如下:
convert_date(dataset)

我也尝试过 to_datetime 函数,但不确定我是否正确使用它。作为引用,我使用的数据集在多列和多行中有日期,所以我正在寻找一种方法将所有这些转换为正确的格式,同时忽略任何错误。

编辑:所以我没有一个带有“日期”的列,而是有多个列,例如 StartDate、EndDate、Last Updated 和其他一些列。我想看到的结果是,如果我转到一列,例如 dataset.columns['StartDate'],我想获得一个日期值,例如 15/03/2019,而不是 42156。

任何帮助将非常感激!

最佳答案

我有一个类似的问题,由于 this answer 我能够克服它.
试试功能 datetime.fromordinal来自 datetime模块如下:

from datetime import datetime


# for integers
def convert_int_date(ordinal_date):
date_time = datetime.fromordinal(
datetime(1900, 1, 1).toordinal() + ordinal_date - 2
)
return date_time

dataset["StartDate"] = dataset["StartDate"].astype(int).apply(convert_int_date)
然后,您可以随意格式化您的日期。
dataset["StartDate"] = dataset["StartDate"].dt.strftime("%m/%d/%Y")
在我的特殊情况下,每个日期都由一个整数给出。不考虑小时、分钟和秒。如果您确实需要考虑这些(或者如果您有一个 float 数字作为日期),请尝试以下操作:
# for floats
def convert_float_date(ordinal_date):
hours, r = divmod(ordinal_date, 1)
minutes, r = divmod(r*60, 1)
seconds = r*60

date_time = datetime.fromordinal(
datetime(1900, 1, 1).toordinal() + ordinal_date - 2
)
datetime = date_time.replace(hour=hours, minute=minutes, second=seconds)
return date_time

dataset["StartDate"] = dataset["StartDate"].astype(float).apply(convert_float_date)
Credits

关于python - 将日期从 xlsb 文件格式化为 MM/DD/YYYY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55387880/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com