我有一些日期記錄,其中有一些年、月或日的“未知”值。
所以就像 UKUK-UK-UK 或 UKUK-01-UK 或 2022-UK-UK 等。我想要的規則是讓 Unknown year 為 1900,month 為 12,day 為月的最后一天。
我可以處理年份和月份。因為它在資料框中:
import pandas as pd
df = pd.DataFrame({"a":["1991-UK-01","UKUK-01-01"],"b":["UKUK-UK-UK","1988-02-UK"],"c":["2001-03-UK","2003-08-UK"],"d":["1",""]})
df['a'] = df['a'].str.replace("UKUK","1900",regex=True)
df['a'] = df['a'].str.replace("-UK-","-12-",regex=True)
可能不是優雅的方式,但我做了類似的事情。但問題是“一天”的一部分。因為如果日期與月份不符(例如 2021-09-31、2021-02-31),我申請時會出現錯誤pd.to_datetime。
我在想我是否必須為類似的規則列出一個清單[31,28,31,30...31],但是 2 月 29 日這實際上是我的痛苦……嗯。
我的 Z 計劃是將它們轉換為下個月的第一個日期,然后做-1 day
但是......在我這樣做之前,我想問一些建議是否有更明智的方法。
會有解決方案嗎?一如既往地感謝。
uj5u.com熱心網友回復:
只需用 01 替換你的最后一個元素,然后偏移。
df['a'] = df['a'].str.replace('(?<=-)UK$', '01', regex=True)
df['date'] = pd.to_datetime(df['a']) pd.offsets.MonthEnd()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/429429.html
標籤:python-3.x 熊猫 数据框 日期 约会时间
上一篇:應用日期差回傳NaT
