Pandas 什么时候通过lambda有效而不有效?

Pandas 什么时候通过lambda有效而不有效?,pandas,Pandas,在某些情况下,您可以将lambda x传递给数据帧中的链函数,如下例所示: df.loc[lambda x: x] df.assign(lambda x: x) 但在某些情况下,它不起作用。如果您以下面的示例为例,您将如何链接eq() 例如,如果我们在a列上调用explode(),它将返回以下内容: a b 0 1 1 0 2 1 0 3 1 1 2 2 1 3 2 1 4 2 2 3 4 2 4 4 2 5

在某些情况下,您可以将
lambda x
传递给数据帧中的链函数,如下例所示:

df.loc[lambda x: x]
df.assign(lambda x: x)
但在某些情况下,它不起作用。如果您以下面的示例为例,您将如何链接
eq()

例如,如果我们在a列上调用
explode()
,它将返回以下内容:

    a   b
0   1   1
0   2   1
0   3   1
1   2   2
1   3   2
1   4   2
2   3   4
2   4   4
2   5   4
但是如果我们想看看
列a
在哪里等于
列b
,该怎么办呢。以下代码不起作用。您将如何链接
eq()
?什么时候可以通过λx:x,什么时候不能

df.explode('a').eq(lambda x: x['b'],axis=0)

lambda
将在任何允许函数或可调用函数作为输入的地方工作,例如在
df.apply
文档中:

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds    
Parameters
func: function
Function to apply to each column or row.
DataFrame.eq(other, axis='columns', level=None)    
Parameters
other: scalar, sequence, Series, or DataFrame
Any single or multiple element data structure, or list-like object.
df.eq
文档相比:

DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds    
Parameters
func: function
Function to apply to each column or row.
DataFrame.eq(other, axis='columns', level=None)    
Parameters
other: scalar, sequence, Series, or DataFrame
Any single or multiple element data structure, or list-like object.

顺便说一句,您还可以执行df.explode('a').query('a==b')基本上,您可以在允许调用对象作为输入的任何位置传递a
lambda
。。。您可能对以下内容感兴趣:
df.explode(“a”).pipe(lambda x:x.a.eq(x.b))
。谢谢你们的评论。我感谢您的澄清。但是您仍然可以使用loc,尽管我同意
query
更简单:
df.explode('a').loc[lambda x:x['a']==x['b']]