Python 将pandas dataframe中的两个日期与当前日期进行比较并创建新列?

Python 将pandas dataframe中的两个日期与当前日期进行比较并创建新列?,python,pandas,dataframe,datetime,Python,Pandas,Dataframe,Datetime,我的数据帧(df)如下所示: from datetime import date Today = str(date.today()) df['Today_Date'] = Today Status_Date Today_Date Planned_Date 25-11-2020 27-11-2020 25-11-2020 28-11-2020 27-11-2020 29-11-2020 26-11-2020 27-11-2020 29-11-2

我的数据帧(df)如下所示:

from datetime import date
Today = str(date.today())
df['Today_Date'] = Today

Status_Date  Today_Date  Planned_Date   
 25-11-2020  27-11-2020  25-11-2020      
 28-11-2020  27-11-2020  29-11-2020      
 26-11-2020  27-11-2020  29-11-2020      
 27-11-2020  27-11-2020  27-11-2020      
 30-11-2020  27-11-2020  29-11-2020      
 23-11-2020  27-11-2020  24-11-2020   
我需要将状态日期和计划日期与当前日期(理想情况下为当前日期)进行比较,并创建新列,如下所示:

from datetime import date
Today = str(date.today())
df['Today_Date'] = Today

Status_Date  Today_Date  Planned_Date   
 25-11-2020  27-11-2020  25-11-2020      
 28-11-2020  27-11-2020  29-11-2020      
 26-11-2020  27-11-2020  29-11-2020      
 27-11-2020  27-11-2020  27-11-2020      
 30-11-2020  27-11-2020  29-11-2020      
 23-11-2020  27-11-2020  24-11-2020   
预期产出

Status_Date  Today_Date  Planned_Date   Status_Color
 25-11-2020  27-11-2020  25-11-2020      Red
 28-11-2020  27-11-2020  29-11-2020      Green
 26-11-2020  27-11-2020  29-11-2020      Amber
 27-11-2020  27-11-2020  27-11-2020      Amber
 30-11-2020  27-11-2020  29-11-2020      Green
 23-11-2020  27-11-2020  24-11-2020      Red

如何在python中实现这一点?

首先使用将所有日期列转换为datetime,然后使用创建新列:

In [3957]: df.Status_Date = pd.to_datetime(df.Status_Date)    
In [3958]: df.Today_Date = pd.to_datetime(df.Today_Date)    
In [3959]: df.Planned_Date = pd.to_datetime(df.Planned_Date)

In [3961]: conds = [((df.Today_Date > df.Status_Date) & (df.Today_Date > df.Planned_Date)), ((df.Today_Date < df.Status_Date) & (df.Today_Date < df.Planned_Date))]    
In [3962]: choices = ['Red', 'Green']

In [3965]: df['Status_Color'] = np.select(conds, choices, default='Amber')

In [3966]: df
Out[3966]: 
  Status_Date Today_Date Planned_Date Status_Color
0  2020-11-25 2020-11-27   2020-11-25          Red
1  2020-11-28 2020-11-27   2020-11-29        Green
2  2020-11-26 2020-11-27   2020-11-29        Amber
3  2020-11-27 2020-11-27   2020-11-27        Amber
4  2020-11-30 2020-11-27   2020-11-29        Green
5  2020-11-23 2020-11-27   2020-11-24          Red
[3957]中的
:df.Status\u Date=pd.to\u datetime(df.Status\u Date)
在[3958]中:df.Today\u Date=pd.to\u datetime(df.Today\u Date)
在[3959]中:df.Planned\u Date=pd.to\u datetime(df.Planned\u Date)
在[3961]中:conds=[((df.Today\u Date>df.Status\u Date)和(df.Today\u Date>df.Planned\u Date)),((df.Today\u Date
首先使用将所有日期列转换为datetime,然后使用创建新列:

In [3957]: df.Status_Date = pd.to_datetime(df.Status_Date)    
In [3958]: df.Today_Date = pd.to_datetime(df.Today_Date)    
In [3959]: df.Planned_Date = pd.to_datetime(df.Planned_Date)

In [3961]: conds = [((df.Today_Date > df.Status_Date) & (df.Today_Date > df.Planned_Date)), ((df.Today_Date < df.Status_Date) & (df.Today_Date < df.Planned_Date))]    
In [3962]: choices = ['Red', 'Green']

In [3965]: df['Status_Color'] = np.select(conds, choices, default='Amber')

In [3966]: df
Out[3966]: 
  Status_Date Today_Date Planned_Date Status_Color
0  2020-11-25 2020-11-27   2020-11-25          Red
1  2020-11-28 2020-11-27   2020-11-29        Green
2  2020-11-26 2020-11-27   2020-11-29        Amber
3  2020-11-27 2020-11-27   2020-11-27        Amber
4  2020-11-30 2020-11-27   2020-11-29        Green
5  2020-11-23 2020-11-27   2020-11-24          Red
[3957]中的
:df.Status\u Date=pd.to\u datetime(df.Status\u Date)
在[3958]中:df.Today\u Date=pd.to\u datetime(df.Today\u Date)
在[3959]中:df.Planned\u Date=pd.to\u datetime(df.Planned\u Date)
在[3961]中:conds=[((df.Today\u Date>df.Status\u Date)和(df.Today\u Date>df.Planned\u Date)),((df.Today\u Date
填充值
红色、绿色、琥珀色
的逻辑是什么?@MayankPorwal,1.如果
状态日期
计划日期
小于“今天日期”,则为红色。2.如果
状态日期
计划日期
大于“今天日期”,则为绿色。3.Else Amber填充值<代码>红色、绿色、琥珀色<代码>的逻辑是什么?@MayankPorwal,1.如果<代码>状态日期<代码>和<代码>计划日期<代码>小于“今天日期”,则为红色。2.如果<代码>状态日期<代码>和<代码>计划日期<代码>大于“今天日期”,则为绿色。3.不然的话,伏笔现在起作用了