如何根据日期比较使 pandas 变量为空

how to null pandas variable based on date comparison

在下面的代码中,我试图创建一个新变量 var1,它与新变量 var2 相同,只是如果 var1 大于 2021/1/1 则它为空。

df_jan['var2'] = df_jan['var1'].apply(lambda x: np.nan if x['var1']>pd.Timestamp(2021,1,20))

我刚收到“语法错误”响应。我做错了什么?

如果在 apply() 方法中使用 if 语句,则还必须使用 else 语句:

所以尝试:

df_jan['var2'] = df_jan['var1'].apply(lambda x: np.nan if x>pd.Timestamp(2021,1,20) else x)

顺便说一句,apply() 是引擎盖下的循环,因此为了获得更好的性能,您可以使用:

Series.mask()方法:

df_jan['var2']=df_jan['var1'].mask(df_jan['var1']>pd.Timestamp(2021,1,20))

Series.where()方法:

df_jan['var2']=df_jan['var1'].where(~(df_jan['var1']>pd.Timestamp(2021,1,20)))