熊猫创建一个基于月和日的新列?

时间:2021-05-31 02:08:20

标签: pandas

我有一个带有 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}}。

2 个答案:

答案 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