当使用pandas的
如果使用lambda调用相同的函数,则可以正常工作。对每一行进行迭代,并将每一行作为“x”传递,df [列名]返回当前行中该列的单个值。
这就像lambda删除了一个维度。有人能解释一下或指向具体的文档吗?谢谢。
示例1:使用lambda,可以正常工作。
apply()
函数时,通过lambda和不通过lambda调用函数的规则/过程是什么?以下是示例。显然,如果不使用lambda,则整个系列(df [列名])将传递到“test”函数中,试图在一系列上执行布尔运算会引发错误。如果使用lambda调用相同的函数,则可以正常工作。对每一行进行迭代,并将每一行作为“x”传递,df [列名]返回当前行中该列的单个值。
这就像lambda删除了一个维度。有人能解释一下或指向具体的文档吗?谢谢。
示例1:使用lambda,可以正常工作。
print("probPredDF columns:", probPredDF.columns)
def test( x, y):
if x==y:
r = 'equal'
else:
r = 'not equal'
return r
probPredDF.apply( lambda x: test( x['yTest'], x[ 'yPred']), axis=1 ).head()
示例1输出
probPredDF columns: Index([0, 1, 'yPred', 'yTest'], dtype='object')
Out[215]:
0 equal
1 equal
2 equal
3 equal
4 equal
dtype: object
第二个例子没有使用lambda,会抛出“对序列的布尔操作”错误
print("probPredDF columns:", probPredDF.columns)
def test( x, y):
if x==y:
r = 'equal'
else:
r = 'not equal'
return r
probPredDF.apply( test( probPredDF['yTest'], probPredDF[ 'yPred']), axis=1 ).head()
示例 2 输出
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().