传递 lambda 什么时候起作用,什么时候不起作用?

时间:2021-05-21 15:03:45

标签: pandas

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

df.loc[lambda x: x]
df.assign(lambda x: x)

但在某些情况下,它不起作用。如果你看下面的例子,你会如何链接 eq()

df = pd.DataFrame({'a':[[1,2,3],[2,3,4],[3,4,5]],'b':[1,2,4]})
           a    b
0   [1, 2, 3]   1
1   [2, 3, 4]   2
2   [3, 4, 5]   4

例如,如果我们在 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

但是如果我们想看看 column a 在哪里等于 column b 怎么办。以下代码不起作用。你会如何链接eq()?你什么时候可以通过lambda x: x,什么时候不能?

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

1 个答案:

答案 0 :(得分: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.

df.eq 文档对比:

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.