【问题标题】:How to stop python auto date parsing while reading a excel file如何在读取excel文件时停止python自动日期解析
【发布时间】: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

标签: python python-3.x pandas xlwings


【解决方案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}) 这条线在下面抛出错误:
猜你喜欢
  • 2011-04-21
  • 2020-12-11
  • 2016-10-07
  • 2021-09-13
  • 1970-01-01
  • 1970-01-01
  • 2012-06-23
  • 2016-12-15
  • 1970-01-01
相关资源
最近更新 更多