簡體   English   中英

如何將日期的特定格式轉換為 Python Pandas 中有用且可讀的日期格式?

[英]How to convert specific format of date to useful and readable format of date in Python Pandas?

我在 Pandas 中有 DataFrame,如下所示:

數據類型:

  • ID - 數字

  • 假期 - object

  • 年 - object

    ID 假期
    111 1 麥粒腫 2022年
    222 20 奎 2022年
    333 3月8日 2022年
    ... ... ...
  • 麥粒腫 - 一月

  • 奎 - 四月

  • 三月至三月

我需要轉換上表以獲得完整且有用的日期(字符串格式)。

所以,我需要像下面這樣的東西:

ID  | HOLIDAY     | YEAR
----|-------------|-------
111 | 01-01-2022  | 2022
222 | 20-02-2022  | 2022
333 | 08-03-2022  | 2022
... | ...         | ...

我怎樣才能在 Python Pandas 中做到這一點?

我用了這樣的想法:

df['HOLIDAY'] = pd.to_datetime(df['HOLIDAY'] +" "+ df['YEAR'] , format='%d %b %Y')
df['HOLIDAY'] = df['HOLIDAY'].dt.strftime('%d-%m-%Y')

但它會產生如下錯誤: ValueError: time data '1 sty 2022' does not match format '%d %b %Y' (match)

你好,你可以使用這個:

d={'sty':'-1','kwi':'-4','mar':'-3'} #creat dict 

a=df.HOLIDAY.tolist() # creat list of original holiday
for i in range(len(df)):
    for word, replacement in d.items():
        a[i] = a[i].replace(word, replacement)# creat a loop that replace the mount by her number
        a[i] = a[i].replace(" ", "")# delete the space ex '1 sty' -> '1sty'
df.HOLIDAY=a
l=[]
for i in range(len(df)):
    l.append(str(df.HOLIDAY[i])+'-'+str(df.YEAR[i]))#loop that concatenat year and holiday

df.HOLIDAY=l# replace holiday in df by new values

df.HOLIDAY=pd.to_datetime(df.HOLIDAY, format="%d-%m-%Y")#transform holiday from str to datetime 

嘗試:

df["HOLIDAY"] = df["HOLIDAY"].apply(
    lambda x: x.replace("sty", "January")
    .replace("kwi", "April")
    .replace("mar", "March")
)

df["HOLIDAY"] = pd.to_datetime(
    df["HOLIDAY"] + " " + df["YEAR"].astype(str)
).dt.strftime("%d-%m-%Y")

print(df)

印刷:

    ID     HOLIDAY  YEAR
0  111  01-01-2022  2022
1  222  20-04-2022  2022
2  333  08-03-2022  2022

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM