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']]