在某些情况下,您可以传入 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)
答案 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.