gpt4 book ai didi

python - 如何使用引擎 ='openpyxl' 使 pandas.read_excel 的行为与 xlrd 一样,默认情况下不显示纳秒?

转载 作者:行者123 更新时间:2023-12-04 19:45:19 27 4
gpt4 key购买 nike

我们有一个将 Excel .xlsx 电子表格中的数据读入 pandas DataFrame 的过程。在尝试升级到 pandas 的最新版本(1.2.1)时,我在 pandas 的文档中看到了以下内容 read_excel engine 的函数争论:

  • “openpyxl” supports newer Excel file formats.

Changed in version 1.2.0: The engine xlrd now only supports old-style .xls files.


所以,我加了 engine='openpyxl'给我的 read_excel函数调用并开始看到奇怪的新行为,日期时间值现在默认显示纳秒,而 xlrd 的情况并非如此.最重要的是,我发现日期时间与 Excel 中的预期值相差几纳秒。我在 pandas 1.2.1 和 1.1.4 中也看到了同样的情况。
对于以下 Excel 数据(9/24 日期的原始值显示为 44098.0416666667,9/9 日期的原始值显示为 44083.6847222222)
enter image description here
我看到以下行为:
>>> import pandas as pd
>>> pd.read_excel('~/testDatetimeNanos.xlsx')
TestDate
0 2020-09-24 01:00:00
1 2020-09-09 16:26:00
2 2020-09-09 16:26:00
>>> pd.read_excel('~/testDatetimeNanos.xlsx', engine='openpyxl')
TestDate
0 2020-09-24 01:00:00.000003
1 2020-09-09 16:25:59.999998
2 2020-09-09 16:26:00.000000
我想知道是否有办法使用新的 openpyxl 引擎,使其行为与旧的 xlrd 引擎一致......?
另外,想知道我是否偶然发现了一个错误(更新:已提交 bug report)。
从 openpyxl ≥3.0.7 开始,该错误已修复(2021 年 8 月)

最佳答案

无论引擎和 openpyxl 的版本如何,您都可以像这样简单地删除纳秒:

df['testDate'] = df['testDate'].str[:-7]

# testDate
#0 2020-09-24 01:00:00
#1 2020-09-09 16:25:59
#2 2020-09-09 16:26:00

关于python - 如何使用引擎 ='openpyxl' 使 pandas.read_excel 的行为与 xlrd 一样,默认情况下不显示纳秒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66037692/

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