如果else不在python中使用datetime

如果else不在python中使用datetime,python,pandas,Python,Pandas,背景 我有一个数据帧df。它有客户的订单日期(交易何时完成等)。我正在尝试创建一个新列“最近”,如果交易是最近的(从今天起1个月内),则该列将有1,如果不是最近的交易,则为0 e、 g 当前df order_date 2019-01-01 2019-12-14 2019-10-12 2019-11-22 需要输出df order_date recent 2019-01-01 0 2019-12-14 1 2019-10-12 0 2019-11-22

背景

我有一个数据帧df。它有客户的订单日期(交易何时完成等)。我正在尝试创建一个新列“最近”,如果交易是最近的(从今天起1个月内),则该列将有1,如果不是最近的交易,则为0

e、 g

当前df

 order_date
 2019-01-01
 2019-12-14
 2019-10-12
 2019-11-22
需要输出df

 order_date   recent
 2019-01-01    0
 2019-12-14    1
 2019-10-12    0
 2019-11-22    0
 2019-12-09    1
代码:

   import datetime
   df['recent'] = 9
   df['order_date'] = pd.to_datetime(df['order_date']).dt.date

   if ((df['order_date']) >(datetime.date.today() - datetime.timedelta(1*365/12))).any():
    df['recent'] == 1
   else:
    df['recent'] == 0
[IN]:print(df['order_date'].loc[0])
2019-01-01
[IN]:type(df['order_date'])
pandas.core.series.Series
[IN]:print(datetime.date.today() - datetime.timedelta(1*365/12))
2019-12-01
[IN]:type(datetime.date.today() - datetime.timedelta(1*365/12))
datetime.date
我为recent编写了默认值9,因为if-else不起作用,现在我在df['recent']中得到了所有9个值

一些基本背景:

   import datetime
   df['recent'] = 9
   df['order_date'] = pd.to_datetime(df['order_date']).dt.date

   if ((df['order_date']) >(datetime.date.today() - datetime.timedelta(1*365/12))).any():
    df['recent'] == 1
   else:
    df['recent'] == 0
[IN]:print(df['order_date'].loc[0])
2019-01-01
[IN]:type(df['order_date'])
pandas.core.series.Series
[IN]:print(datetime.date.today() - datetime.timedelta(1*365/12))
2019-12-01
[IN]:type(datetime.date.today() - datetime.timedelta(1*365/12))
datetime.date

通过以下方式将布尔掩码转换为整数:

或通过以下方式设置值:


您好,这很有效。谢谢。但是如何使它与if-else一起工作。@ShailajaGuptaKapoor-if-use
any()
与前面提到的一样,它意味着mask
m
set
df['recent']
1
-所有值,否则将所有值设置为
0
。因此,如果要按条件在熊猫值中设置正确的方式,请使用
numpy。其中
,则是
如果else
语句的numpy/pandas替代。当交易在10月份时,第2行怎么可能是1行?50多天前,只有第1行应该是1行@datanovel