我有一个带有 date
列的日期帧 date
2019-11-01
2019-11-02
2019-11-03
2019-11-04
2019-11-05
...
2021-04-01
:
is_in_period
。如果 True
位于明年的 date
到 (11-15)
,我想创建一个新列 (03-15)
,其值为 df[df.date==pd.Timestamp('2019-11-17')]['is_in_period'] = True
。例如{{1}}。
答案 0 :(得分:0)
您需要确保您的日期列类型是 datetime64[ns]
。你可以这样做
pd.to_datetime(df['date'])
您还需要 from datetime import datetime
使用该库来制作其他日期进行比较
从这里开始,您可以根据两次比较创建新列
df['is_in_period'] = (datetime.strptime('2019-11-02','%Y-%m-%d') <= df['date']) & (pd.to_datetime(df['date']) <= datetime.strptime('2019-11-04','%Y-%m-%d'))
答案 1 :(得分:0)
首先通过 to_datetime()
方法将日期列转换为 datetime[ns] dtype:
df['date']=pd.to_datetime(df['date'])
然后获取当前年份和下一年:
currentyear=df['date'].dt.year[0]
nextyear=currentyear+1
现在通过 between()
方法创建一个布尔掩码:
mask=df['date'].between(str(currentyear)+'-11-17',str(nextyear)+'-03-15')
最后:
df['is_in_period']=mask