首页 > 解决方案 > 无法将 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 文件

所需格式

标签: pythonpython-datetime

解决方案


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')


推荐阅读