我在查看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)
上面的代码是可以运行的,运行的结果,
但如果我把上面最后一行注释放开,也就是生成一个5*4的df,上面代码就会报错,
这是什么原因呢?为什么df的行列数相同时就没问题不同时就会报错?
你可以参考下这篇文章:pandas中iloc()函数