[英]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.