如何在读取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自动日期解析的主要内容,如果未能解决你的问题,请参考以下文章