在pandas文档中看到dataframe的iloc属性可以传递lambda表达式,API文档中只传递了一个,表示对行过滤,我现在想要传两个,取行列号都为偶数的元素:
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)
上面代码可以运行,运行结果:

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

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