如何在读取excel文件时停止python自动日期解析

Posted

技术标签:

【中文标题】如何在读取excel文件时停止python自动日期解析【英文标题】:How to stop python auto date parsing while reading a excel file 【发布时间】:2020-11-13 23:40:30 【问题描述】:

我需要在不更改任何日期、时间格式、浮点格式的情况下读取 excel 文件并转换为数据框。如果我将 excel 转换为 CSV 并使用 read_csv() 读取它,这工作正常。

例如:

import pandas as pd
import numpy as np
#code for reading excel
df=pd.read_excel("605.xlsx",parse_dates=False,sheet_name="Group 1",keep_default_na=False,dtype=str)
print("df_excel:")
#code for reading csv   

df1=pd.read_csv("Group 1.csv",parse_dates=False,dtype=str,na_filter = False)
 print("df_csv:",df1)

输出:

在上面的代码中 parse_dates=False 在读取 CSV 文件时工作正常,但 parse_dates=False 在 read_excel() 中不起作用

预期输出: 需要在不更改日期、时间格式的情况下将精确的 excel 数据放入数据框中。

【问题讨论】:

你运行的是什么版本的熊猫? 熊猫版-> 1.0.4 【参考方案1】:

来自 Pandas 文档中关于 read_excel() 的 parse_dates 参数:

如果列或索引包含不可解析的日期,则整个列或索引将作为对象数据类型原封不动地返回。如果您不想将某些单元格解析为日期,只需将它们在 Excel 中的类型更改为“文本”即可。

你可以试试这个:

df = pd.read_excel("605.xlsx",parse_dates=False,sheet_name="Group1",keep_default_na=False,dtype=str, converters='as_at_date': str)

将日期列显式转换为字符串可能会有所帮助。

【讨论】:

我尝试了上面的代码行,仍然自动解析输出日期值。 如果传入 dtype='as_at_date': object 呢?或者,在转换器参数中尝试使用 object 而不是 str? 我尝试了以下行,但日期仍然是自动解析的。 df = pd.read_excel("6054.xlsx",parse_dates=False,sheet_name="Group 1 Attribute",keep_default_na=False,converters='as_at_date': str,dtype='as_at_date': object)跨度> 忘了提到如果你使用“dtype='as_at_date': object,你应该删除converters参数。你也可以尝试在converters参数中传入object而不是str跨度> 我尝试了两种方式。 1)改变dtype: df = pd.read_excel("6054.xlsx",parse_dates=False,sheet_name="Group 1 Attribute",keep_default_na=False,dtype='as_at_date': object) 。仍然解析数据格式。 2) 转换器参数中的对象: df = pd.read_excel("6054.xlsx",parse_dates=False,sheet_name="Group 1 Attribute",keep_default_na=False,converters='as_at_date': object) 这条线在下面抛出错误:

以上是关于如何在读取excel文件时停止python自动日期解析的主要内容,如果未能解决你的问题,请参考以下文章

如何全局停止excel日期自动格式化[关闭]

如何从python中的excel文件中读取日期?

Selenium2+Python3.6实战:读取Excel文件

Python自动化必会技能-Excel文件读取

POI读取excel日期的问题

xlrd实现从excel文件读取数据