【问题标题】:Pandas to_datetime Format does nothing- pythonPandas to_datetime 格式什么都不做 - python
【发布时间】:2021-03-22 06:04:24
【问题描述】:

编辑:对不起,修复了代码并添加了更多示例。

尝试从 xlsx 文件格式化日期,但没有任何反应。这是我的代码:

原始数据:

import pandas as pd
import numpy as np
import datetime as dt

df = pd.read_excel("Open_PO.xlsx")

df['Need By Date - Atual'].values

原始数据输出:

array(['2020-05-22T00:00:00.000000000', '2020-06-03T00:00:00.000000000',
       '2020-06-03T00:00:00.000000000', ...,
       '2022-10-28T00:00:00.000000000', '2022-10-28T00:00:00.000000000',
       '2022-12-22T00:00:00.000000000'], dtype='datetime64[ns]')

格式化尝试:

df['Need By Date - Atual'] = pd.to_datetime(df["Need By Date - Atual"],format = '%d-%b-%y').dt.date

df['Need By Date - Atual'].values

输出:

array([datetime.date(2020, 5, 22), datetime.date(2020, 6, 3),
       datetime.date(2020, 6, 3), ..., datetime.date(2022, 10, 28),
       datetime.date(2022, 10, 28), datetime.date(2022, 12, 22)],
      dtype=object)

如您所见,格式参数不起作用。

已经尝试添加 dayfirst=True、astype 函数以及人们在其他问题中发布的几乎所有内容。

不能使用 str 格式的日期,因为它会弄乱我稍后在代码中使用的 sort_values 函数。

我能做什么??

【问题讨论】:

  • 用两行代码写出你想要做的最小工作示例。
  • df['Need By Date - Atual'] 已经是 dtype 日期时间,无需调用 pd.to_datetime。如果你想转换成字符串,你可以通过df['Need By Date - Atual'].dt.strftime('%d-%b-%y')
  • format 仅在类型为str 时使用,因为您从datetime64[ns] 转换它不会考虑它。
  • @AmyChodorowski,准确地说:在这种情况下,formatpd.to_datetime 的关键字参数,它指定了一个strptime 指令。你是对的,只有当 input 是数据类型字符串(不是日期时间)时才需要它。但由于 dtype 已经是 datetime,它并没有错误;更像不适用

标签: python excel pandas dataframe datetime


【解决方案1】:

Pandas 系列不是 numpy 数组

这一行已经完全符合您的要求:

df['Need By Date - Atual'] = pd.to_datetime(df["Need By Date - Atual"],format = '%d-%b-%y').dt.date
# -> type pandas.Series

但是这一行显示了你的 pandas 系列中的一个 numpy 数组:

df['Need By Date - Atual'].values 
# -> type numpy.ndarray

由于系列和格式化的日期时间是 pandas 特有的,因此这些值将被转换为常规的日期时间,由 numpy 知道。

如何将结果作为字符串

这可能是您想要实现的目标:

pd.to_datetime(dd[0]).dt.strftime("%d/%m/%Y").values

这一次(没有双关语),视觉格式将应用为字符串,而不是日期时间。

如何为excel设置日期时间

您可能希望使用来自 pandas.ExcelWriter 的参数 date_format

with ExcelWriter('path_to_file.xlsx', date_format='DD-MM-YY') as writer:
    df.to_excel(writer, sheet_name='some_date_sheet')

来源:pandas' ExcelWriter documentation

【讨论】:

  • 该死,不知道,谢谢!问题是,当我使用 xlsx 编写器使用干净的数据框创建 xlsx 文件时,日期输出与 numpy 数组中的相同。我能做些什么来正确格式化它吗?
猜你喜欢
  • 2023-02-10
  • 1970-01-01
  • 2018-10-06
  • 2022-11-10
  • 1970-01-01
  • 1970-01-01
  • 2019-03-01
  • 2020-02-29
  • 2014-05-09
相关资源
最近更新 更多