如何计算给定月份和日期的增量

2024-09-29 06:27:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的df

doc_date    date_string
2019-06-03  WW0306
2019-06-07  EH0706

doc_datedatetime64格式的year-month-daydate_string是字符串dtype,如果删除了非数字字符,则为day/monthmonth/day格式

df['date_string'].str.replace(r'\D+', '')

如何将date_string转换成datetime64,如果date_stringdoc_date的+/-180天内,而不考虑它没有转换成的年份和任何日期格式,则将标志within_180设置为true

 df['within_180'] = df.apply(lambda x: x.between(x.doc_date -
                                          Timedelta(180, unit='d'),
                                          x.doc_date +
                                          Timedelta(180, unit='d')))

结果应该是

doc_date    date_string    within_180
2019-06-03  WW0306         true
2019-06-07  EH0706         true

Tags: truedfdatestringdoc格式unityear
1条回答
网友
1楼 · 发布于 2024-09-29 06:27:33

IIUC,将date_string列转换为replace之后的日期时间,并使用^{}访问这两列的一年中的日期,并与^{}进行比较:

s=pd.to_datetime(df['date_string'].str.replace(r'\D+', ''),format='%d%m')
#df.doc_date=pd.to_datetime(df.doc_date) convert to datetime if not already datetime
df['withith_180'] = (df.doc_date.dt.dayofyear-s.dt.dayofyear).le(180)

    doc_date date_string  withith_180
0 2019-06-03      WW0306         True
1 2019-06-07      EH0706         True

相关问题 更多 >