pandas中iloc传递lambda表达式遇到的问题

我在查看pandas中dataframe的iloc属性时,看到里面可以传递lambda表达式,API文档中https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html#pandas.DataFrame.iloc只传递了一个,表示对行过滤,我现在想要传两个,取行列号都为偶数的元素,

import pandas as pd

nums = [
    [1, 2, 3, 4],
    [5, 6, 7, 8],
    [9, 10, 11, 12],
    [13, 14, 15, 16]
    # , [17, 18, 19, 20]
]

df = pd.DataFrame(data=nums)

res = df.iloc[lambda x: x.index % 2 == 0, lambda y: y.index % 2 == 0]
print(res)

上面的代码是可以运行的,运行的结果,

img

但如果我把上面最后一行注释放开,也就是生成一个5*4的df,上面代码就会报错,

img

这是什么原因呢?为什么df的行列数相同时就没问题不同时就会报错?

你可以参考下这篇文章:pandas中iloc()函数
同时,你还可以查看手册:python- Lambda 表达式 中的内容