Python 在lambda函数中使用条件句
我打算使用一个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
'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