【问题标题】:Pandas.read_excel reads date into timestamp, I want a stringPandas.read_excel 将日期读入时间戳,我想要一个字符串
【发布时间】:2016-06-05 09:05:22
【问题描述】:

我使用.read_excel 将一个大型 Excel 文件读入 pandas,该文件包含日期列。读入 pandas 时,日期默认为时间戳。由于文件很大,我想将日期读取为字符串。

如果这不可能,那么我至少想以与原始文件相同的格式将日期导出回 Excel(例如"8/18/2009")。

我的两个问题是:

  1. 能否避免将 Excel 日期转换为 pandas 中的时间戳?
  2. 如果不可能,如何有效地以原始格式写回日期?

【问题讨论】:

  • “当读入 pandas 时,日期默认为时间戳,或者至少在我将其导出回 Excel 时。”这两个是哪个?
  • 根据这个问题的cmets,没有办法避免将Excel日期转换为时间戳:stackoverflow.com/questions/34156830/…
  • 你可以试试这个:stackoverflow.com/a/28769537/5276797
  • 第三条评论中的代码“f.write(vbscript.encode('utf-8'))”在python 3中不起作用。我把它放在2to3转换器中,它没有' t 进行更改。有什么建议吗?
  • 错误信息是什么?

标签: python pandas datetime import-from-excel


【解决方案1】:

这与此处的问题相似。 Leave dates as strings using read_excel function from pandas in python

检查答案:

  • 在 pandas.read_excel 中使用转换器{'Date': str} 选项会有所帮助。
    pandas.read_excel(xlsx, sheet, converters={'Date': str})
  • 您可以尝试将时间戳转换回原始格式
    df['Date'][0].strftime('%Y/%m/%d')

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。 这就是为我解决问题的方法:

    df = pd.read_excel(excel_link, sheet_name, dtype=str)
    

    如果您不介意将 df 或整列转换为字符串

    【讨论】:

      【解决方案3】:
      1. 我不知道如何读取日期而不是使用 read_excel 转换为时间戳。
      2. 由于日期在读入数据帧时已转换为日期时间,因此可以按照以下方式以原始格式打印日期 - 我使用了“mm/dd/yyyy”。
      import pandas as pd
      
      df = pd.read_excel(
          "file_to_read.xlsx",
          sheet_name="sheetname",
      )
      writer = pd.ExcelWriter(
          "file_to_write.xlsx",
          engine="xlsxwriter",
          datetime_format="mm/dd/yyyy",
      )
      df.to_excel(
          writer,
          index=False,
          header=True,
          sheet_name="sheetname",
      )
      

      【讨论】:

        猜你喜欢
        • 2017-07-02
        • 1970-01-01
        • 2022-01-21
        • 1970-01-01
        • 2012-10-25
        • 1970-01-01
        • 2019-03-31
        • 2011-05-05
        相关资源
        最近更新 更多