Pandas 熊猫创建基于月份和日期的新列?
我有一个dateframPandas 熊猫创建基于月份和日期的新列?,pandas,Pandas,我有一个dateframdf和date列: date 2019-11-01 2019-11-02 2019-11-03 2019-11-04 2019-11-05 ... 2021-04-01 。如果日期位于下一年的(11-15)到(03-15),我想创建一个新列is_in_period,其值为True。例如df[df.date==pd.Timestamp('2019-11-17')]['is_in_period']=True您需要确保您的日期列类型为datetime64[ns]。你可以用它
df
和date
列:
date
2019-11-01
2019-11-02
2019-11-03
2019-11-04
2019-11-05
...
2021-04-01
。如果
日期
位于下一年的(11-15)
到(03-15)
,我想创建一个新列is_in_period
,其值为True
。例如df[df.date==pd.Timestamp('2019-11-17')]['is_in_period']=True
您需要确保您的日期列类型为datetime64[ns]
。你可以用它来做这个
pd.to_datetime(df['date'])
您还需要从datetime导入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'))
df['is_in_period']=(datetime.strtime('2019-11-02','%Y-%m-%d')首先通过to_datetime()方法将日期列转换为datetime[ns]数据类型。
方法:
df['date']=pd.to_datetime(df['date'])
mask=df['date'].between(str(currentyear)+'-11-17',str(nextyear)+'-03-15')
然后获取当前年度和下一年度:
currentyear=df['date'].dt.year[0]
nextyear=currentyear+1
现在通过between()
方法创建一个布尔掩码:
df['date']=pd.to_datetime(df['date'])
mask=df['date'].between(str(currentyear)+'-11-17',str(nextyear)+'-03-15')
最后:
df['is_in_period']=mask
我以前尝试过这种方法。但是我必须指定年
来指定期间。我想在没有给定的年
的情况下执行此操作。whist,啊,我现在明白了。是的,这有点棘手……这是一个不优雅的解决方案,但可能会起作用-有一个临时列,可以将所有年份更改为某个普通年份(比如1900年),然后将其与'date temp=11/15/1900'进行比较。这里有另一个可能有帮助的答案:我的帖子似乎不清楚。如果我的date
列超过这2年。有没有一种快速的方法可以直接比较这个时间范围而不指定具体的年份?否则,我必须指定每一年11-15
至03-15
。