python - 无法将 DateTime 格式更改为 python 中的指定格式
问题描述
在 python 中将日期字符串“1/09/2020”转换为字符串“1-Sep-2020”。尝试 stackoverflow 中提到的每个解决方案,但无法更改它。有时值错误来自数据格式不匹配,当我尝试匹配它时,错误会超出范围。excel数据有问题还是我写错了代码。请帮我解决这个问题???
xlsm_files=['202009 - September - Diamond Plod Day & Night MKY021.xlsm']
import time
import pandas as pd
import numpy as np
import datetime
df=pd.DataFrame()
for fn in xlsm_files:
all_dfs=pd.read_excel(fn, sheet_name=None, engine='openpyxl')
list_data = all_dfs.keys()
all_dfs.pop('Date',None)
all_dfs.pop('Ops Report',None)
all_dfs.pop('Fuel Report',None)
all_dfs.pop('Bit Report',None)
all_dfs.pop('Plod Example',None)
all_dfs.pop('Plod Definitions',None)
all_dfs.pop('Consumables',None)
df2 = pd.DataFrame(columns=["PlodDate"])
for ws in list_data:
df1 = all_dfs[ws]
new_row = {'PlodDate':df1.iloc[3,3]}
df2 = df2.append(new_row,ignore_index=True)
df2['PlodDate']=pd.to_datetime(df2['PlodDate'].astype(str), format="%d/%m/%Y")
df2['PlodDate']=df2['PlodDate'].apply(lambda x: x.strftime("%d-%b-%Y"))
df2
ValueError:日期超出月份的范围或与格式不匹配
方法 1-尝试,因为它显示错误日期超出范围
try:
datetime.datetime.strptime(df2['PlodDate'].astype(str).values[0],"%d/%m/%Y")
except ValueError:
continue
df2['PlodDate']=pd.to_datetime(df2['PlodDate'].astype(str), format="%d/%m/%Y")
df2['PlodDate']=df2['PlodDate'].apply(lambda x: x.strftime("%d-%b-%Y"))
附上Excel 文件
解决方案
df2['PlodDate']=pd.to_datetime(df2['PlodDate'].astype(str), format="%d/%m/%Y")
日期 = df2['PlodDate'].split('/')
df2['PlodDate'] = datetime.date(int(date[2]), int(date[1]), int(date[0])).strftime('%d-%b-%Y')
推荐阅读
- r - 从R中的重复数据有条件地选择第n个obs
- java - 带有 Logback 的映射诊断上下文的类型化 JSON 输出
- linux - Busybox 重启对 buildroot Linux 没有影响
- azure-active-directory - 启用 Azure AD '需要用户分配',如何处理同一租户中的未经授权的用户
- apache-flink - Flink:我们应该使用什么来代替命令行选项'-yt'?
- python - 替换 NaN 值
- windows-terminal - 阻止 Windows 终端显示当前目录
- game-physics - 使用坐标查找形状所属的节点
- web-applications - 如何关闭特定的 mdc 对话框
- google-cloud-storage - 访问 Ad Manager 存储分区中的数据