【发布时间】: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,准确地说:在这种情况下,
format是pd.to_datetime的关键字参数,它指定了一个strptime 指令。你是对的,只有当 input 是数据类型字符串(不是日期时间)时才需要它。但由于 dtype 已经是 datetime,它并没有错误;更像不适用。
标签: python excel pandas dataframe datetime