Python 在lambda函数中使用条件句

Python 在lambda函数中使用条件句,python,pandas,lambda,Python,Pandas,Lambda,我打算使用一个lambda函数,它为非空值返回'Purchase',并返回'No Purchase'else。我不确定该用哪一个。如果我使用第一个,它会工作。然而,我不明白为什么我要用第一个而不是第二个 df['is_purchase']=df.单击_day.apply(lambda x:'purchase'如果pd.notnull(x)否则'No purchase') df['is_purchase']=df。单击_day.apply(lambda x:'purchase'如果pd.notn

我打算使用一个lambda函数,它为非空值返回
'Purchase'
,并返回
'No Purchase'
else。我不确定该用哪一个。如果我使用第一个,它会工作。然而,我不明白为什么我要用第一个而不是第二个

df['is_purchase']=df.单击_day.apply(lambda x:'purchase'如果pd.notnull(x)否则'No purchase')
df['is_purchase']=df。单击_day.apply(lambda x:'purchase'如果pd.notnull(x)==True,否则为'No purchase')

有人能解释一下为什么第一个是真的吗?

因为在任何编程语言中,
如果pd.notnull(x)==true是不好的风格。
==True
已经隐含了,那么为什么要包含它呢?

如果
某个东西具有逻辑值
True
,那么将其与
True
进行比较的结果是:

something == True
也是
真的


反之亦然:如果
something==true
,则
something
具有
true
逻辑值。那么形式呢

if something:
意思与

if something == True:

要了解为什么选择最短的表单,请比较

if (a < 10) == True:
如果(a<10)=真:

如果a<10:

哪一个更自然?

下面是一个已经解释过的可视示例:

In [45]: s = pd.Series([True, False])

In [46]: s
Out[46]: 
0     True
1    False
dtype: bool

In [47]: s2 = s == True

In [48]: s2
Out[48]: 
0     True
1    False
dtype: bool

In [49]: s.equals(s2)
Out[49]: True

如果某个变量
与如果某个变量==True
是一样的,所以不需要显式地键入它。

问题出在哪里,错误消息?这很有趣,但是当第一个变量显然是更好的代码时,为什么还要使用第二个变量呢?
pd.notnull(x)==True
pd.notnull(x)
表示,因此第二个更冗长。没有错误消息。我在一个网站上学习,这是一个实践工作。作为回答,它使用了第一个。我只是不明白为什么第一个而不是第二个。那么它们都是以同样的方式工作的?
In [45]: s = pd.Series([True, False])

In [46]: s
Out[46]: 
0     True
1    False
dtype: bool

In [47]: s2 = s == True

In [48]: s2
Out[48]: 
0     True
1    False
dtype: bool

In [49]: s.equals(s2)
Out[49]: True