如果else不在python中使用datetime
背景 我有一个数据帧df。它有客户的订单日期(交易何时完成等)。我正在尝试创建一个新列“最近”,如果交易是最近的(从今天起1个月内),则该列将有1,如果不是最近的交易,则为0 e、 g 当前df如果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
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()
与前面提到的一样,它意味着maskm
setdf['recent']
到1
-所有值,否则将所有值设置为0
。因此,如果要按条件在熊猫值中设置正确的方式,请使用numpy。其中,则是如果else
语句的numpy/pandas替代。当交易在10月份时,第2行怎么可能是1行?50多天前,只有第1行应该是1行@datanovel