Python 将pandas dataframe中的两个日期与当前日期进行比较并创建新列?
我的数据帧(df)如下所示: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
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.不然的话,伏笔现在起作用了