使用 bool 系列为 Pandas Dataframe 建立索引时,我有点困惑。
我应该使用 iloc 还是 loc?或任何更好的解决方案?
例如
t1 = pd.DataFrame(np.ones([3,4]))
t1.iloc[1:3,0]=3
此行将给出正确答案
t1.loc[:,(t1>2).any()]
但与 iloc 一致将引发错误
t1.iloc[:,(t1>2).any()]
我检查 https://pandas.pydata.org/pandas-docs/stable/indexing.html ,页面说 iloc 和 loc 都接受一个 bool 数组。为什么 iloc 在我的示例中不起作用?什么时候使用 iloc 和 loc?或者有没有更好的选择?
最佳答案
细微之处在于 iloc
需要一个 bool 值 数组 ,而 loc
可以使用 bool 序列或 bool 数组。该文档在说明 bool 数组在任何一种情况下都可以工作时在技术上是正确的。
因此,对于 iloc
,通过 pd.Series.values
提取 NumPy bool 数组将起作用:
t1.iloc[:, (t1>2).any().values]
关于python - 何时将 iloc 和 loc 用于 bool 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51585502/