簡體   English   中英

在日期和錯誤格式上過濾 pandas dataframe

[英]Filter pandas dataframe on dates and wrong format

我有一個 dataframe df,其中包含這樣一個字符串的日期列:

Date
01/06/2022
03/07/2022
18/05/2022
12/02/2021
WK28
WK30
15/09/2021
09/02/2021
...

我想用最近 6 個月的數據和錯誤的格式數據(WK28、WK30...)更新我的 dataframe,如下所示:

Date
01/06/2022
03/07/2022
18/05/2022
WK28
WK30
...

我設法通過將列轉換為日期格式並計算帶有條件的掩碼來保留最近 6 個月的日期:

df['Dates']=pd.to_datetime(df['Dates'], errors='coerce', dayfirst=True)
mask = df['Dates'] >= pd.Timestamp((datetime.today() - timedelta(days=180)).date())
df = df[mask]

但是我怎樣才能保留錯誤的格式數據呢?

使用帶有 2 個掩碼的boolean 索引

# save date as datetime in series
date = pd.to_datetime(df['Date'], errors='coerce', dayfirst=True)
# is it NaT?
m1 = date.isna()
# is it in the last 6 months?
m2 = date.ge(pd.to_datetime('today')-pd.DateOffset(months=6))

# if any condition is True, keep the row
out = df[m1|m2]

output:

         Date
0  01/06/2022
1  03/07/2022
2  18/05/2022
4        WK28
5        WK30

中間掩碼:

         Date     m1     m2  m1|m2
0  01/06/2022  False   True   True
1  03/07/2022  False   True   True
2  18/05/2022  False   True   True
3  12/02/2021  False  False  False
4        WK28   True  False   True
5        WK30   True  False   True
6  15/09/2021  False  False  False
7  09/02/2021  False  False  False

暫無
暫無

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

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